node.js - nodejs 错误处理方式
高洛峰
高洛峰 2017-04-17 15:59:51
0
0
404

现在我使用一个第三方的模块,一遇到错误,直接弹出崩溃异常。

我看了他的代码都是

self.emit('error', makeError(code, text));

function makeError(code, text) {
  var err = new Error(text);
  err.code = code;
  return err;
}

self.emit('error' 这个东西,我没发现哪里定义,是不是默认就带有?

现在我不希望遇到一个错误,程序立马崩溃,我希望使用

console.log(err);

的方式可以输出错误信息,程序仍然可以运行。在不改动人家源码的情况下,怎么实现呢?


我知道一个东西可以屏蔽不弹出报错。

process.on('uncaughtException', function(err) {
    console.log(err);
    console.error('Error caught in uncaughtException event:', err);
});

但我不希望整个程序都放这个东西,有些未知的错误,我还是想弹出这个的。


我自己解决了,贴出答案,方便后来者:

使用domain

var domain = require('domain');
var d = domain.create();
d.run(function () {
    setTimeout(function () {
        throw new Error('async error'); // 抛出一个异步异常
    }, 1000);
});

d.on('error', function (err) {
    console.log('catch err:', err); // 这里可以捕获异步异常
});

参考资料:http://www.infoq.com/cn/artic...

高洛峰
高洛峰

拥有18年软件开发和IT教学经验。曾任多家上市公司技术总监、架构师、项目经理、高级软件工程师等职务。 网络人气名人讲师,...

全部回覆(0)
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板