如果语句成功,我需要能够运行一堆代码。如果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++
}
答案 0 :(得分:2)
不,抛出异常(您使用第一个代码段捕获)与返回错误代码(channel == 0
(第二个代码段检查)非常不同)。他们不这样做。
您可以采取哪些措施来避免该布尔变量
try {
channel = subject.QueryInterface(Ci.nsIHttpChannel);
...bunch of stuff...
} catch(err) {
intErrorCount++
}
但如果在一堆东西中发生异常,这也会引发错误计数。
答案 1 :(得分:0)
不,你不能简单地用if / else替换try / catch。如果一行抛出错误,javascript解释器将停止执行该脚本。