【问题标题】:Is it possible to set a global uncaught exception handler in Meteor?是否可以在 Meteor 中设置全局未捕获异常处理程序?
【发布时间】:2016-01-29 15:33:40
【问题描述】:

我想在 Meteor 中捕获未捕获的异常并以优雅的方式处理它们。有没有类似 Node 的 process.on('uncaughtException', function(err) {}) 的东西?

我对客户端和服务器端的解决方案都感兴趣。

【问题讨论】:

  • 如果它存在就好了,我现在在客户端使用window.onerror = function(message, url, linenumber) {...};
  • 我也在尝试为服务器找出这些东西。但是,似乎 Meteor 至少从服务器方法中捕获了异常,并自己报告它们:(

标签: meteor


【解决方案1】:

我正在测试这个想法用于服务器端未捕获的异常处理。

Fiber = Npm.require('fibers');
process.on('uncaughtException', function(err){
    console.log(err.message);
    console.log(err.stack);
    Fiber( function(){
        Logs.insert({ ... }) // Logs is a collection
    }).run();
    process.exit(1)
};

【讨论】:

  • 这还能用吗?我尝试安装 uncaughtException 处理程序,但它不会触发。似乎 Meteor 以某种方式覆盖了它。
【解决方案2】:

我也为此苦苦挣扎,最终覆盖了不同的控制台方法,因为我可以在没有堆栈跟踪的情况下生活。错误显示在控制台窗口中,所以这对我有用。 process.on('uncaughtException', ...) 不适用于 Meteor,并且由于某些奇怪的原因,它们没有提供任何好的替代方案。

This little library 帮了我很多忙,使用它或尝试查看源代码 - 它非常简短且中肯。

【讨论】:

    猜你喜欢
    • 2018-06-14
    • 2011-02-15
    • 2013-10-25
    • 1970-01-01
    • 2011-07-02
    • 2015-01-02
    • 2014-03-19
    • 1970-01-01
    • 2011-10-17
    相关资源
    最近更新 更多