コラム:例外処理

目次

説明

ここでは、『例外処理』について少し触れます。

プログラムでは、エラーが発生する可能性のある処理を、どう扱うかという問題があります。発生時点で処理を停止させてもよいのですが、エラーが発生したら特別な処理を行ない、処理を継続したいこともあります。

そうした時のプログラムの書き方が『例外処理』です。それでは以下、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ファイルをブラウザで開いたあと、右クリックをして『ソースの表示』を選択してください。

メモ帳で、ファイルの中身を見ることができます。