私は、その約束の機能の外から、約束の中に投げ込まれている例外を捕まえることができるようにしたい。私は、内部エラーをキャッチすることができますが、私は途中でキャッチを追加することによって、私は(最終的に)したい場所に終わるためにそれを投げることができない内部例外をキャッチするにはどうすればよいですか?
throwError =() => {
throw new Error("myError");
};
let iWantToCatchTheErrorThatThisOneThrows =() => {
return (new Promise((resolve) => {
resolve()
}).then(() => {
(new Promise((resolve, reject) => {
return throwError();
}));
return new Promise((resolve) => setTimeout(resolve, 1000));
})).catch((error) => {
//Never reaches here
console.log(error)
});
};
iWantToCatchTheErrorThatThisOneThrows().then(() => {
console.log("Quit gracefully");
}).catch((error) => {
//Never reaches here
console.log(error);
});
:
を次のコードを参照してください。let iWantToCatchTheErrorThatThisOneThrows =() => {
return (new Promise((resolve) => {
resolve()
}).then(() => {
(new Promise((resolve, reject) => {
return throwError();
})).catch((error) => {
//Prints, but thrown error isn't bubbled anywhere
console.log(error);
throw new Error(error);
});
return new Promise((resolve) => setTimeout(resolve, 1000));
})).catch((error) => {
//Never reaches here
console.log(error)
});
};
iWantToCatchTheErrorThatThisOneThrows().then(() => {
console.log("Quit gracefully");
}).catch((error) => {
//Never reaches here
console.log(error);
});
すべての試験はNodejs 7.1.0に
内部コールバックでは、あらゆる種類の投げ込みと再投げ込みを行い、無関係な解決済みの約束を返します。外側の '.catch()'にキャッチするものがないことは驚くべきことではありません。 –