如果语句成功,我需要能够运行一堆代码。如果 javascript 有 try/catch/else,那么我会将所有代码放在 else 中并完成它。我不想使用 bool 值来模仿 try/catch/else 中的 else。我的理解是 try 可以处理错误但不能 IF 做同样的事情吗?如果是这样,我将不得不使用 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++
}
最佳答案
不,抛出异常(您用第一个代码段捕获)与返回错误代码(channel == 0
,第二个代码段检查)有很大不同。他们不这样做。
为了避免该 bool 变量,您可能会做的是
try {
channel = subject.QueryInterface(Ci.nsIHttpChannel);
...bunch of stuff...
} catch(err) {
intErrorCount++
}
但是如果一堆东西发生异常,那也会增加错误计数。
关于javascript try catch vs if then else,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23555272/