私は非同期の滝を使用しています。関数の1つがコールバック(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()");
}
}
コードは、問題をフォーマットする場所です。今、あなたはあなたの '' function1'の*内部myAsyncCallback' *を宣言するので、これは本当に賢明なコードではありません。これを減らして、人々がファイルにコピーして貼り付けて、ノードで実行して、表示されているのと同じものを見ることができます。 –
@マイク、彼らは実際にはお互いの中にいません。サンプルを更新しましたので、うまくいけばそれは明らかになります。あなたは "..."を取り除いてテストすることができます。 – user994165
私は答えを加えましたが、呼び出されている関数の詳細を知る必要があります。私はあなたの例のように見える私の作業コードを投稿しました! – clay