我正在使用异步瀑布。当我的一个函数调用callback(err)时,我的自定义异步回调被调用。在那里我抛出了一个错误,希望它能够在异步的try块中被捕获,但是这没有发生。节点异步和异常处理
try {
async.waterfall([function1, function2], myAsyncCallback);
}
catch(err) {
console.log("THIS CODE IS NEVER EXECUTED.");
}
var function1 = function() {
...
//some error occurs:
callback(new Error(errMsg), errMsg);
...
}
var function2 = function() {
...
}
function myAsyncCallback(err, result) {
console.log("This code gets executed.");
if (err) {
console.log("This code gets executed too.");
throw new Error("I want this error caught at the top around the catch around async.waterfall()");
}
}
这是代码格式化的问题:现在你'声明* myAsyncCallback'里面你'function1'的*,所以这是不是真的懂事代码。你可以减少这个[mcve],人们可以复制粘贴到文件并运行在节点上看到你看到的相同的东西,而不是发布代码,保证不会显示你的问题,因为它不能运行? –
@Mike,他们实际上并不在彼此之内。更新了样本,希望能够说清楚。你应该能够删除“...”来测试它。 – user994165
我添加了一个答案,但可能需要更深入了解所调用的函数。我发布了我的工作代码,这看起来很像你的例子! – clay