runtime.lastError

This value is set when an asynchronous function has an error condition that it needs to report to its caller.
If you call an asynchronous function that may set lastError, you are expected to check for the error when you handle the result of the function. If lastError has been set and you don't check it, then an error will be raised.
 

Checking lastError

There are two different ways add-ons can call asynchronous functions:

  • by passing in a callback to the function, which is called with the function's result
  • by omitting the callback, and using the browser namespace, in which case the function will return a Promise.

In the first case, if the function can set lastError, you should check it in the callback:

function logCookie(c) {
  if (browser.extension.lastError) {
    console.error(browser.extension.lastError);
  } else {
    console.log(c);
  }
}

browser.cookies.set(
  {url: "https://developer.mozilla.org/"},
  logCookie
);

In the second case, lastError will be passed into the second argument to Promise.then():

function logCookie(c) {
  console.log(c);
}

function logError(e) {
  console.error(e);
}

var setCookie = browser.cookies.set(
  {url: "https://developer.mozilla.org/"}
);

setCookie.then(logCookie, logError);

If lastError hasn't been set then it will be null.

Note that runtime.lastError is an alias for extension.lastError: they are set together, and checking either one will work.

Browser compatibility

EdgeFirefoxChromeOpera
Basic support?47.0Yes33
Firefox
Basic support48.0

Acknowledgements

This API is based on Chromium's chrome.runtime API. This documentation is derived from runtime.json in the Chromium code.

Document Tags and Contributors

 Contributors to this page: wbamberg
 Last updated by: wbamberg,