IT知識の秘伝書

例外処理

X(Twitter) facebook はてなブックマーク LINE
OgImage

プログラミング言語によってはプログラムをする際にエラーが出た場合の対処方法として、予めエラーが出た時にどういう対応をするのかコードで書く事ができる。エラーのような意図しない結果が出る事を例外というが、その処理をタイトルの通り例外処理と呼ぶ。

エラーが出るとどうなってしまうのですか?
プログラムが止まってしまう。コードが悪かったらサービス自体た止まってしまう事もあるから例外処理は大事だ

例外処理について

JavaScriptに限らず様々なプログラミング言語には例外処理ができる。まずは例外処理がないコードを見てみよう。

console.log(x); console.log("エラー");

上記のコードを実行するとxは宣言されていないのにいきなりconsole.logで参照するのでエラーになる。エラーになると下のコードは実行されないので「エラー」と表示されない。プログラムがエラーが出た場所で止まってしまうのだ。

例外処理のサンプルコード

try { console.log(x); } catch (error) { console.log(error.message); } finally { console.log("通過"); } console.log("エラー");
x is not defined
通過
エラー

tryで囲まれたブロックの中で例外が発生したらcatchのコードに飛び、エラーの内容を表示している。

} catch (e) { console.log(e.message);

catchはこのように書いても動いたが、分かりやすいようにeではなくerrorと書くべきだ。

最後のfinallyは例外が出なくても例外が出ても中のコードが評価される。要するに必ず通るコードだ。今回は「通過」というメッセージを表示している。

finallyは別に無くても大丈夫

try { console.log(x); } catch (error) { console.log(error.message); } console.log("エラー");

上記コードでもOK。

JavaScriptの例外処理はあまり意味がない?

意味がない訳ではないがJavaScriptに限らずインタプリタ言語は動的型付けと言って臨機応変に変数が変化して対応するので実は例外が発生しにくい。

let x = "aaa"; if(x > 100) { }

このコードは文字列と整数を比べておりコンパイル言語ではエラーになるので例外が発生するが、多くのスクリプト言語の場合、エラーにはならずそのままコードが通ってしまう。プログラムが止まらないのは場合によっては良い事かもしれないが、重大なバグになる可能性もあるので注意が必要だ。