try catch と if文 の違い ~結局どういう時に使うのか~

2021/12/06に公開

結局どういう時に使うのか

try catchは例外処理でif文は条件分岐に使うんですよ

「だからそれって何やねん。結局どういう時に使うねん。」

ということで、例外処理を使う時ってどんな時なのか
それは"止まってほしくない処理が、何らかの原因で止まってしまった時に発火する処理を書いておく"ことです

「いやいや、止まってほしくない処理があることわかってるんならif文でよくね?falseが帰ってきたらelseで発火させればええやん」

でもそれって止まってほしくない処理が、"想定内"の動きをしたときにしかできないよねってことなんです
例えば、trueかfalseしか返さないのであればif文でいいし、ある複数の選択肢か返さないのであればswitch文などを使えばいいです

でも仮に

  • ユーザーがinputに無茶苦茶なこと書いて万が一処理が落ちるようなことになったら?
  • API連携していたサーバー先が落ちたりしてたら?

こういう場合って"想定外"のエラーが起きて本番環境でサービスが止まってしまうことになりますよね

そういう時にユーザーに表示させる画面はもちろん、運営がすぐに気づけるように自動で報告する処理を書いておいてあげた方がいいよねってことです

try{
  // 処理をかく、エラーが起こってしまったら処理を中断し、catchに飛ぶ
}catch(e){
  // エラーが起きてしまったら発火する処理
  // エラーが発生しましたページ見せて、エラー文を社内メールに送る処理を書くとか
}

エラーってコンソールに出てくれるから、開発中はいらねえやんっていうのはある意味正論
ただ、後で追加するのがしんどいから先に書いてる人も多くいます

GitHubで編集を提案

Discussion