runtime.lastError

此值用于在异步 API 提供回调函数时,报告来自该异步 API 的错误消息。这对于使用基于回调的 WebExtension API 的扩展非常有用。

如果您使用的是基于 Promise 的 API,则无需检查此属性:而是将错误处理程序传递给 Promise。

js
const gettingCookies = browser.cookies.getAll();
gettingCookies.then(onGot, onError);

当异步函数遇到需要向其调用者报告的错误状况时,就会设置 runtime.lastError 属性。

如果您调用一个可能设置 lastError 的异步函数,您需要在处理该函数结果时检查错误。如果在回调函数中没有检查 lastError,它已被设置,那么就会抛出一个错误。

语法

js
let myError = browser.runtime.lastError;  // null or Error object

一个表示错误的 Error 对象。message 属性是一个 string,包含对错误的易于理解的描述。如果 lastError 未设置,则值为 null

示例

设置一个 cookie,使用回调函数来记录新 cookie 或报告错误

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

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

相同,但使用 Promise 来处理 setCookie() 的结果

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

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

const setCookie = browser.cookies.set({
  url: "https://mdn.org.cn/",
});

setCookie.then(logCookie, logError);

注意: runtime.lastErrorextension.lastError 的别名。它们一起设置,检查其中任何一个都可以。

扩展程序示例

浏览器兼容性

注意: 此 API 基于 Chromium 的 chrome.runtime API。本文档源自 Chromium 代码中的 runtime.json