kei0425tan’s blog

技術的なことを主に

javascript の Async/Await を利用した場合のエラーハンドリングについて

普段趣味ではjavascriptでプログラムを書くことが多いのですが、callbackが面倒なので、ずっとPromiseを使っていました。

thenって書けばインデントも増えないし、ブロックごとに新規に変数作ったりしていいじゃんって思っていたのですが、、、

最近作っているアプリケーションで相手のサーバのせいで、通信のエラーが頻発するようになり、やっぱりエラーハンドリングがちょっとつらいので、node v8からリリース予定のAsync/Awaitについて調べてみました。

nodeで試す場合は、v7にして、さらにオプション --harmony-async-awaitを付けてください。
ブラウザの場合は、そのまま貼り付ければ実行できます。


この結果を見ると、await中の例外は残念ながらキャッチしてくれませんでした。

よって、awaitで呼び出すメソッドは、確実に例外処理を行う必要があります。(try catchして、rejectを呼び出すなど)
一方、awaitを利用するほうも、rejectを確実に処理をする必要があります。(try catchして、リカバリなどを行う)

まあ、もともとコールバックで行っていた場合は例外が飛ばなかったし、Promiseで行っていた場合も、catchの付け方が難しかったので、使い慣れたtry catchでエラーハンドリングができるようになるのは、大きなメリットだと思います。