【问题标题】:Setting up a global error handler in a bootstrapped firefox extension在引导的 firefox 扩展中设置全局错误处理程序
【发布时间】:2014-01-14 21:40:26
【问题描述】:

我正在为 Firefox 构建一个引导扩展(不使用附加 SDK,因为我需要 tcp 套接字)。尽管我所有的 IO 调用等都受 try/catch 保护,但我希望有一个全局错误处理程序以防万一。引导扩展无法访问窗口对象,因此 window.onerror 路由是不可能的。关于如何解决这个问题有什么建议吗?

提前致谢。

【问题讨论】:

    标签: javascript firefox exception error-handling firefox-addon


    【解决方案1】:

    没有可靠的全局错误处理程序。只需将 startup/shutdown (install/uninstall) 包裹在 try-catch 块中。您可能还想包装全局语句。

    try {
      // do some fancy initialization... But you really shouldn't at the global scope.
    }
    catch (ex) {
      // handle/log error, e.g.
      Components.utils.reportError(ex);
    }
    
    function startup() {
      try {
        // Run
      }
      catch (ex) {
        // handle/log error, e.g.
        Components.utils.reportError(ex);
      }
    }
    function shutdown() …
    // etc.
    

    无论如何,扩展管理器都会使用您的 bootstrap.js 记录故障(请参阅extensions.logging.enabled 首选项)。

    另外:SDK 插件可以使用chrome module 来访问低级别的东西。

    【讨论】:

    • 感谢您的回复。正如您所建议的,我已经在启动和关闭中有try/catch 块。但是它们只能分别捕获在启动和关闭期间发生的异常。由于大部分工作是通过几个异步后台回调和侦听器进行的,因此它们将无法捕获任何杂散/未捕获的异常。在 Chrome 上,每个应用程序都有自己的背景页面,所以 window.onerror 可以工作。我将浏览 chrome 模块,看看它是否能解决我的问题。
    猜你喜欢
    • 2013-07-01
    • 2013-03-06
    • 2023-04-04
    • 1970-01-01
    • 2013-01-20
    • 1970-01-01
    • 2011-10-14
    • 1970-01-01
    • 2019-11-14
    相关资源
    最近更新 更多