検索

ホームページ  >  に質問  >  本文

node.js - nodejs 错误处理方式

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

我看了他的代码都是

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...

高洛峰高洛峰2786日前408

全員に返信(0)返信します

応答なし
  • キャンセル返事