ユーザーアイコン

mizuko

約1か月前

0
0

Nest.jsにて非同期処理内でerrorをthrowするとfilterに引っ掛からない

Nest.js

以下の様な意図的に非同期処理にしていた関数で、throwしたerrorはfilterに引っかからず、ecsなどのtaskが落ちてしまう。 Promiseチェーンの中でthrowされたエラーは、そのPromiseチェーンの中でのみ伝播するため、filterでcatchできないらしい。

this.hoge().then(async () => { const fuga = await this.hogeRepository().catch((error) => { throw new Error(error); }); return fuga; });

非同期処理の場合は、そもそもthrowせずログを吐いて完了にする。 errorをcatchしたいなら、そもそもawaitをつけてtry catchで処理した方が良い。