javascript - 如何停止 JavaScript 中嵌套 try/catch 错误的传播?

标签 javascript try-catch

function1() 输出:

a
d
b

我想要的是,如果function2出错,返回到function1,并将输出保留在:

a
d

这可能吗?我想我可以在finally block 中引用返回的 bool 值(是否有错误),但我想知道是否有更好的解决方案。

function1(){
    try {
             console.log("a");
             function2();
             console.log("b");
         } catch (e){       
             console.log("c");
         }
}
function2(){
    try {
             if(...) throw new Error();
         } catch (e){
             console.log("d");
         }
}

最佳答案

我认为您确实希望代码返回,并且您应该查看结构解决方案以获得您想要的输出。

为了确保 function1 停止执行,请让 function2 抛出错误。您可以不捕获函数 2 中的错误并让它们冒泡,也可以从函数 2 中的 catch block 抛出错误:

function2(){
    try {
             if(...) throw new Error();
         } catch (e){
             console.log("d");
             throw new Error();   //do this!
         }
}

另外,我意识到您可能正在寻找更多的控制权,因此您可以将某些内容从 function2 扔到 function1 以使其更加清晰,如下所示:

function one(){
    try {
             console.log("a");
             two();
             console.log("b");
         } catch(e){       
             console.log(e == 7);  //this is true!
         }
}

function two(){
    try {
             if(true){ throw new Error();}

         } catch(e){
             console.log("d");
             throw 7;
         }
}

one();

关于javascript - 如何停止 JavaScript 中嵌套 try/catch 错误的传播?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34682096/

相关文章:

javascript - UI Bootstrap Datepicker 弹出窗口不适用于 Modal 和 ControllerAs

java - try catch 数组吗?

java - Eclipse 不再检测丢失的 try/catch 吗?

javascript - 使用 SyntaxError 捕获无效变量名

java - 是否可以创建一个等待整个 try block 执行的 catch block ?

javascript - I.E(JavaScript、jQuery)中预期出现 ';' 异常

javascript - 带有 reCaptcha 错误的 Div 不会显示

javascript - Highcharts 错误地插入编号的额外类别

javascript - Heroku 上的 WebSocket ERR_CONNECTION_REFUSED

java - try-finally 和 try-catch 的区别