コラム:例外処理
目次
説明
ここでは、『例外処理』について少し触れます。
プログラムでは、エラーが発生する可能性のある処理を、どう扱うかという問題があります。発生時点で処理を停止させてもよいのですが、エラーが発生したら特別な処理を行ない、処理を継続したいこともあります。
そうした時のプログラムの書き方が『例外処理』です。それでは以下、JavaScriptの例外処理の方法について解説します。
『例外処理』
JavaScriptの『例外処理』は、『try {(領域A)} catch(e) {(領域B)}』と書きます。エラーが起きる場所を『try {(領域A)}』で囲い、エラーが発生した際の処理を、『catch(e) {(領域B)}』内で書きます。
try { 【例外が発生するかもしれない処理】 } catch(e) { 【eはエラーの詳細を格納したオブジェクト】 【例外が発生した場合の処理】 }
『try {(領域A)}』の『領域A』でエラーが発生すると、プログラムの処理は『領域A』から抜けます。そして、エラーによって処理を停止せずに、『catch(e) {(領域B)}』の『領域B』の部分を実行します。エラーが発生しなかった場合は、『領域B』は実行されません。
またエラーの詳細は、『catch(e) {(領域B)}』の変数『e』内のオブジェクトに格納されます。
この『例外処理』を体験できるプログラムを書いてみます。
var str = "abcdef"; // substrで文字列の一部を取り出す try { var res = str.substr(2, 3); document.write(res + "<br>"); } catch(e) { document.write("エラー発生:" + e + "<br>"); } // 存在しないメソッドを実行しようとする try { var res = str.fake(); document.write(res + "<br>"); } catch(e) { document.write("エラー発生:" + e + "<br>"); }
【結果】
cde エラー発生:TypeError: str.fake is not a function
このように存在しない『fake』メソッドを実行すると、そこで処理は打ち切られ、『document.write(res + "<br>");』は実行されません。
その代わりに『catch(e) {(領域B)}』に処理が移り、『document.write("エラー発生:" + e + "<br>");』が実行されます。そして、「エラー発生:TypeError: str.fake is not a function」と出力されます。
以下、中級者以上向け。
サンプルの入手
以下は、今回出てきたサンプルです。
ZIPでまとめてダウンロード (右クリックから保存してください)
『sample1.html』(サンプル)を表示
プログラムの中身を見たい場合は、それぞれのHTMLファイルをブラウザで開いたあと、右クリックをして『ソースの表示』を選択してください。
メモ帳で、ファイルの中身を見ることができます。