トップページ >  javascript >  try-catch
初版2008/09/02: 最終更新日2013/01/10
  try-catch
try-catch
try-catchとは、例外が発生した場合にその例外をキャッチしてcatchロジックに移動する構文です。
以下、例外を発生させ、catchする例です。エラーは表示されずに、catch内のアラートが表示されるのがわかります。

ソース
<html>
<head>
<title></title>
</head>
<body>
<script language="JavaScript">
<!--
function a(){
    var a;
    try{
        a = d;// bは存在しない
        alert("アラート");
    }catch(e){
        alert("キャッチに移動しています");
    }
}
// -->
</script>
<input type="button" value="submit" onclick="a();">
</body></html>

Errorオブジェクト
上記、catch文の引数の e は、Errorオブジェクトです。Errorオブジェクトの実装はブラウザによって異なるため、IE8ではe.number、e.descriptionがありますが、Chromeにはありません。
以下、IE8でnumberプロパティとdescriptionプロパティを表示する例です。Chrome23で実行するとundefinedとなります。



以下、ソースです。

<html>
<head>
<title></title>
</head>
<body>
<script language="JavaScript">
<!--
function b(){
    var a;
    try{
        a = z;// zは存在しない
        alert("アラート");
    }catch(e){
        alert(e.number);
        alert(e.description);
    }
}
// -->
</script>
<input type="button" value="submit" onclick="b();">
</body></html>

Chrome23のErrorオブジェクトは、stackというプロパティを持ちます。IE8で実行すると、undefinedとなります。



以下、ソースです。

<html>
<head>
<title></title>
</head>
<body>
<script type="text/javascript">
<!--
function c(){
    var a;
    try{
        a = y;// yは存在しない
        alert("アラート");
    }catch(e){
        alert(e.stack);
    }
}
// -->
</script>
<input type="button" value="submit" onclick="c();">
</body></html>