Nest.jsにて非同期処理内でerrorをthrowするとfilterに引っ掛からない
Nest.js
フロントエンド
知識
以下の様な意図的に非同期処理にしていた関数で、throwしたerrorはfilterに引っかからず、ecsなどのtaskが落ちてしまう。 Promiseチェーンの中でthrowされたエラーは、そのPromiseチェーンの中でのみ伝播するため、filterでcatchできないらしい。
ts
this.hoge().then(async () => {
const fuga = await this.hogeRepository().catch((error) => {
throw new Error(error);
});
return fuga;
});非同期処理の場合は、そもそもthrowせずログを吐いて完了にする。 errorをcatchしたいなら、そもそもawaitをつけてtry catchで処理した方が良い。