function1()
输出:
a
d
b
我想要的是,如果function2
错误,不返回到function1,并将输出保留在:
a
d
这可能吗?我想我可以在finally块中引用返回的布尔值(错误或不错),但我想知道是否有更好的解决方案。
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");
}
}
答案 0 :(得分:1)
我认为您真的希望您的代码返回,并且您应该查看结构解决方案以获得所需的输出。
为了确保function1停止执行,让function2抛出一个错误。您可以不捕获function2中的错误并让它们冒泡,或者您可以从函数2中的catch块中抛出错误:
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();