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/