Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/399.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
javascript尝试捕获vs if then else_Javascript_Try Catch - Fatal编程技术网

javascript尝试捕获vs if then else

javascript尝试捕获vs if then else,javascript,try-catch,Javascript,Try Catch,如果语句成功,我需要能够运行一系列代码。如果javascript有一个try/catch/else,那么我会将所有代码放在else中并完成它。我不想使用布尔值来模拟try/catch/else中的else。我的理解是,try可以处理错误,但如果做同样的事情就不行了?如果是这样,我将不得不使用If,但如果QueryInterface失败,我不希望我的程序崩溃。所以我的问题是,如果QueryInterface失败,那么else将在下面的if中执行,对吗?如果是这样的话,那么我想使用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++
}

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

否,抛出异常(第一个代码段捕获)与返回错误代码非常不同(
通道==0
,第二个代码段检查)。他们不一样

要避免该布尔变量,您可能要做的是

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

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

booSuccess==true
-哎哟。可能的重复不幸的是,在一堆东西中有大量的代码。。。要包含嵌套的try。。。我不确定一次尝试如何在另一次尝试中起作用。
try
try
中起作用。内部的
try
将捕获异常,如果可以处理,则执行将正常进行。或者它不能并且想要重新调用,或者处理程序代码抛出;然后outher
try
捕获该异常。