【JavaScript】 エラー補足 try ~ catch

2007.06.06 Author: たわばがに

ということで、今回はJavaScriptの例外処理(エラー補足)に関して書いてみます。

うんちくは後にとっておくとして、まずは毎度おなじみ、サンプルから。
<script type="text/javascript">
<!--
var x = 5;
var z = 3;
alert(x);
alert(y);
alert(z);
//-->
</script>
<script type="text/javascript">
<!--
var x = 5;
var z = 3;
alert(x);
try {
    alert(y);
} catch (e) {
    alert("エラー内容:" + e.toString());
} finally {
    alert("エラー補足終わり");
}
alert(z);
//-->
</script>
<script type="text/javascript">
<!--
var x = 5;
var z = 3;
alert(x);
try {
    if (x > 1) {
        throw "たわば";
    }
    alert(y);
} catch (e) {
    alert("エラー内容:" + e.toString());
} finally {
    alert("エラー補足終わり");
}
alert(z);
//-->
</script>

いきなりのサンプル3連発です。

ここで、「あれ?」と思われた方は、よく見てます。
ええ。1つめのサンプルは実際に動かすとエラーになります。
変数 y が定義されていないにも関わらず、alert で呼び出そうとしているからですね。
このケースだと、エラーが発生した時点でスクリプトの実行は中断されてしまいます。

そこで、trycatch の出番です。
2つ目のサンプルを実行した場合、最後の alert(z) まで処理が行われます。
これは try { ~ 部分でエラーが発生した場合、それを捉えて catch (e) { ~ に処理を渡します。
サンプルでは alert(y) でエラーが捕捉され、catch (e) { ~ 部分の alert が表示される、という形になります。
なお、finally 部分はエラーが発生してもしなくても、trycatch 部分を処理した直後に実行されます。

3つめのサンプルでは、throw "たわば" という部分が追加されていますが、
これはエラーが起きた時と同様、処理を catch (e) { ~ に渡します。
引数で与えたもの(今回の場合は「たわば」という文字列)は、catch(e) の e に渡されます。
意図的にエラーと同じ扱いの状況を発生させないといけない場合等に使用します。

スクリプトの構造が複雑で、例外エラーが発生する場合が想定されるような部分に
適用するとハッピーになれる‥‥かもしれません。

以上、trycatch ネタでした。
名古屋のWebシステム開発・ネットワーク構築会社 コネクティボへ