【JavaScript】 エラー補足 try ~ catch
2007.06.06 Author: たわばがに
ということで、今回はJavaScriptの例外処理(エラー補足)に関して書いてみます。
うんちくは後にとっておくとして、まずは毎度おなじみ、サンプルから。
いきなりのサンプル3連発です。
ここで、「あれ?」と思われた方は、よく見てます。
ええ。1つめのサンプルは実際に動かすとエラーになります。
変数 y が定義されていないにも関わらず、alert で呼び出そうとしているからですね。
このケースだと、エラーが発生した時点でスクリプトの実行は中断されてしまいます。
そこで、try ~ catch の出番です。
2つ目のサンプルを実行した場合、最後の alert(z) まで処理が行われます。
これは try { ~ 部分でエラーが発生した場合、それを捉えて catch (e) { ~ に処理を渡します。
サンプルでは alert(y) でエラーが捕捉され、catch (e) { ~ 部分の alert が表示される、という形になります。
なお、finally 部分はエラーが発生してもしなくても、try ~ catch 部分を処理した直後に実行されます。
3つめのサンプルでは、throw "たわば" という部分が追加されていますが、
これはエラーが起きた時と同様、処理を catch (e) { ~ に渡します。
引数で与えたもの(今回の場合は「たわば」という文字列)は、catch(e) の e に渡されます。
意図的にエラーと同じ扱いの状況を発生させないといけない場合等に使用します。
スクリプトの構造が複雑で、例外エラーが発生する場合が想定されるような部分に
適用するとハッピーになれる‥‥かもしれません。
以上、try ~ catch ネタでした。 名古屋のWebシステム開発・ネットワーク構築会社 コネクティボへ
うんちくは後にとっておくとして、まずは毎度おなじみ、サンプルから。
<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 で呼び出そうとしているからですね。
このケースだと、エラーが発生した時点でスクリプトの実行は中断されてしまいます。
そこで、try ~ catch の出番です。
2つ目のサンプルを実行した場合、最後の alert(z) まで処理が行われます。
これは try { ~ 部分でエラーが発生した場合、それを捉えて catch (e) { ~ に処理を渡します。
サンプルでは alert(y) でエラーが捕捉され、catch (e) { ~ 部分の alert が表示される、という形になります。
なお、finally 部分はエラーが発生してもしなくても、try ~ catch 部分を処理した直後に実行されます。
3つめのサンプルでは、throw "たわば" という部分が追加されていますが、
これはエラーが起きた時と同様、処理を catch (e) { ~ に渡します。
引数で与えたもの(今回の場合は「たわば」という文字列)は、catch(e) の e に渡されます。
意図的にエラーと同じ扱いの状況を発生させないといけない場合等に使用します。
スクリプトの構造が複雑で、例外エラーが発生する場合が想定されるような部分に
適用するとハッピーになれる‥‥かもしれません。
以上、try ~ catch ネタでした。 名古屋のWebシステム開発・ネットワーク構築会社 コネクティボへ