javascript try catch vs if else else

时间:2014-05-09 01:31:14

标签: javascript try-catch

如果语句成功,我需要能够运行一堆代码。如果javascript有一个try / catch / else,那么我会将所有代码放在else中并完成它。我不想在try / catch / else中使用布尔来模仿else。我的理解是,try可以处理错误,但不能做同样的事情吗?如果是这样,我将不得不使用IF,但如果QueryInterface失败,我不希望我的程序崩溃。所以我的问题是,如果QueryInterface失败,那么else将在IF下面执行正确吗?如果是这样,那么我猜使用try / catch的唯一原因是阻止错误条件。

现有方法:

try {
 channel = subject.QueryInterface(Ci.nsIHttpChannel);
} catch(err) {
 booSuccess = false;
 intErrorCount++
}
if (booSuccess == true) {
 ...bunch of stuff...
}
建议的方法:

if (channel = subject.QueryInterface(Ci.nsIHttpChannel)) {
 ...bunch of stuff...
} else {
 intErrorCount++
}

2 个答案:

答案 0 :(得分:2)

不,抛出异常(您使用第一个代码段捕获)与返回错误代码(channel == 0(第二个代码段检查)非常不同)。他们不这样做。

您可以采取哪些措施来避免该布尔变量

try {
 channel = subject.QueryInterface(Ci.nsIHttpChannel);
 ...bunch of stuff...
} catch(err) {
 intErrorCount++
}

但如果在一堆东西中发生异常,这也会引发错误计数。

答案 1 :(得分:0)

不,你不能简单地用if / else替换try / catch。如果一行抛出错误,javascript解释器将停止执行该脚本。