該当箇所: https://typescriptbook.jp/reference/asynchronous/await
「拒否されたPromiseをreturnするとき」>「returnの前にawaitしない (ただreturnする)」セクション
このセクションのrequest関数にはasyncキーワードが付いていません。
function request(): Promise {
throw new Error("error");
}
一つ前のセクション「returnの前にawaitする」では同じrequest関数がasync functionとして定義されており、今回のセクションはその関数のままawaitの有無だけを比較する意図だと理解しています。しかしasyncが付いていないと、throwはmain()のtryブロック内で同期的に例外を投げてキャッチされてしまい、await有無による違いが本来生まれません。
手元の環境(TypeScript 6.0.3, Node.js v22)で実際にこのコードを実行したところ、出力は
error
finally
then
となり、本文記載の
finally
catch
とは一致しませんでした。request関数にasyncを付けると、本文記載の出力通りになることを確認しています。前セクションと同じrequest関数(asyncあり)に揃えていただくのがよいのではないかと思います。
お手数をおかけしますが、ご確認いただけますと幸いです🙇
該当箇所: https://typescriptbook.jp/reference/asynchronous/await
「拒否されたPromiseをreturnするとき」>「returnの前にawaitしない (ただreturnする)」セクション
このセクションのrequest関数にはasyncキーワードが付いていません。
function request(): Promise {
throw new Error("error");
}
一つ前のセクション「returnの前にawaitする」では同じrequest関数がasync functionとして定義されており、今回のセクションはその関数のままawaitの有無だけを比較する意図だと理解しています。しかしasyncが付いていないと、throwはmain()のtryブロック内で同期的に例外を投げてキャッチされてしまい、await有無による違いが本来生まれません。
手元の環境(TypeScript 6.0.3, Node.js v22)で実際にこのコードを実行したところ、出力は
error
finally
then
となり、本文記載の
finally
catch
とは一致しませんでした。request関数にasyncを付けると、本文記載の出力通りになることを確認しています。前セクションと同じrequest関数(asyncあり)に揃えていただくのがよいのではないかと思います。
お手数をおかけしますが、ご確認いただけますと幸いです🙇