JavaScriptの例外処理:try catch finally

プログラムの実行中に例外(エラー)が発生した場合、通常はエラー内容を表示して実行を中断します。しかし、致命的なエラーでなければ、実行を中断せずに発生した例外に応じた処理を行いたいことがあります。

このような処理を例外処理と呼び、JavaScriptではtry-catch-finally構文を使って記述します。

try-catch-finnaly構文の書き方

try節には例外が発生する可能性のある処理を記述します。try節で例外が発生した場合は処理を中断し、catch節に記述した処理が実行されます。

try節で発生した例外を受け取る仮引数の変数名は任意ですが、通常はe(「exception」の頭文字)を使います。

finally説は必ず実行される

また、finally節は例外処理が終わる際に必ず実行されます。try節で例外が発生しなかった場合も実行されます。このため、try節で例外が発生した場合はcatch節とfinally節を、例外が発生しなかった場合はtry節とfinally節を実行してtry構文を抜けます。

なお、catch節とfinally節は省略可能ですが、両方を省略することはできません。

サンプル

次の例は、try節で定義されていない関数f()を呼び出そうとして例外が発生したため、まずcatch節を実行し、最後にfinally節を実行しています。

throw文を使った例外処理の場合分け

throw文を使うと、明示的に例外を発生させることができます。これを使って、例外に応じた処理の場合分けを行うことができます。

次の例は2つ数について除算を行うプログラムです。JavaScriptでは0で除算をするとinfinityという特殊な数値になりますが、ここでは0による除算を行った場合には例外を発生させています。

また、数値以外で除算すると結果はNaNとなってしまうため、同様に例外を発生させています。

0で除算をした場合、あるいは、数値以外で除算をした場合に明示的に例外を発生させ、throw文でそれぞれの例外名("zerodivision", "nan")をcatch節に渡します。

catch節では条件分岐を使って例外名に応じた処理を行っています。


Welcome to UX MILK

UX MILKはより良いサービスやプロダクトを作りたい人のためのメディアです。

このサイトについて

UX MILKのディレクター募集