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

Error handling for async functions without callback or promises

本文关键字:异步 函数 错误 处理 承诺 回调      更新时间:2023-09-26

我正在使用第三方库,它做一些异步操作,但需要尝试捕获错误。它没有回调,也没有async函数的承诺。有人知道有什么库或方法可以捕获这些错误吗?我正在尝试做这样的事情。

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

如果您想要处理不是通过通常渠道出现的错误,您可以尝试在域中运行代码。这将使捕获未处理的错误事件成为可能:

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);
});

当然,您不希望像我的例子中那样只是记录并继续,但是您可以了解情况。