0

我对 Javascript 异常处理感到困惑 我想清除 Javascript 可以捕获哪些错误,或者哪些只能使用 if else 处理尽管两者都“未定义”,但 try 块(并且必须使用 if else 来捕获它)

第一的:

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

第二 :

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/>");
}

为什么我也没有在第二种情况下赶上阻止?

请澄清我的理解。

4

2 回答 2

1

在第一种情况下,您没有在任何地方定义 y 以便引发被 catch 块捕获的异常,但在第二种情况下,您已经定义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

因为第二个例子没有任何错误。唯一的问题是它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 回答