0

Javascriptの例外処理について混乱しています。Javascriptがキャッチできるエラー、またはif elsesでのみ処理できるエラーをクリアしたいのですが、以下の場合のように、最初のケースでは未定義の変数のためにcatchブロックになりますが、他のケースでは留まりましたtry ブロック (そしてそれをキャッチするために if else を使用する必要があります) にもかかわらず、両方とも「定義されていません」

最初:

try {
    var x = 90;
    var value = x / y;
}
catch (err) {
    document.write(err.name + ": " + err.message + "<br/>");
}

2番目 :

function add(x, y) {
    var resultString = "Hello! The result of your math is: ";
    var result = x + y;
    // return resultString + result; not returning  anything; hence, "undefined" also
}

try {
    var addResult = add(2, 3);
    document.write(" the result is : " + addResult + "<br/>");
} catch (err) {
    document.write(err.name + ": " + err.message + "<br/>");
}

2番目のケースでもキャッチブロックにならないのはなぜですか?

私の理解を明確にしてください。

4

2 に答える 2

1

最初のケースでは、どこにも y を定義していないため、catch ブロックによってキャッチされた例外がスローされますが、2 番目のケースでは、定義addResult=undefinedして値を表示しているだけなので、例外はありません。

あなたの最初のケースが

try {
    var x = 90;
    var y = undefined;
    var value = x / y;
}
catch (err) {
    document.write(err.name + ": " + err.message + "<br/>");
}

そうすれば、最初のケースでも例外はありませんでした。

あなたがそれを手に入れたことを願っています:)

于 2013-01-04T18:10:35.193 に答える
1

2 番目の例にはエラーがないためです。唯一の問題はaddResult、値につながる何も返さないことundefinedです。ただし、これはエラーではありません。最初の例では、変数がイベント宣言されていないという理由だけで例外をキャッチしますy(値さえありませんundefined)。

ここで実際にこれを見ることができます:

<script type="text/javascript">
//Error
try{
    alert(x);
}catch(e){
    alert(e.name + ': ' + e.message);
}
//Ok
try{
    var x;
    alert(x);
}catch(e){
    alert(e.name + ': ' + e.message);
}
</script>
于 2013-01-04T18:10:48.297 に答える