没有回调或承诺的异步函数的错误处理

时间:2015-07-30 19:31:59

标签: javascript node.js asynchronous

我正在使用第三方库,它执行一些异步操作但需要尝试捕获错误。它没有回调,也没有异步功能的承诺。有谁知道任何库或捕获这些错误的方法?我正在尝试这样做。

var asyncLib = require( 'asyncLib' );

try {
   asyncLib.doSomething();
} catch( e ) {
    //I want to catch if doSomething throws some error
    // But it doesn't because it's using async resources.
}

1 个答案:

答案 0 :(得分:2)

如果您想要处理通过常规渠道未发送给您的错误,您可以尝试在域中运行代码。这样可以捕获未处理的错误事件:

var d = require('domain').create();
d.on('error', function(err) {
  console.error(err.stack);
});
d.run(function() {
  yourCode();
});

或者,如果这是域错误处理无法解决的问题:

process.on('uncaughtException', function (err) {
  console.error(err.stack);
});

当然,你不会像我的例子那样只是记录和继续,但是你得到了照片。