javascript try catch vs if then else

javascript try catch vs if then else

本文关键字:then else if vs try catch javascript      更新时间:2023-09-26

如果语句成功,我需要能够运行一堆代码。如果javascript有一个try/catch/else,那么我会把所有的代码放在else中,然后完成它。我不想使用布尔值来模仿try/catch/else中的else。我的理解是,尝试可以处理错误,但不能这样做吗?如果是这样,我将不得不使用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,第二个代码片段检查)是非常不同的。他们不做同样的事。

避免使用布尔变量的方法是

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

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

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