这是一个示例:
class A{
method1(){
int result = //do something
if(result > 1){
method2();
} else{
// do something more
}
}
method2(){
try{
// do something
} catch(Exception e){
//throw a message
}
}
}
情况是这样的。
当调用Method2中的catch块时,我希望程序继续执行并返回到方法1中的else块。我该如何实现?
感谢您的帮助。
答案 0 :(得分:4)
简单地将method2
的调用封装在try-catch
块中。捕获异常将不允许抛出未处理的异常。做这样的事情:
if(result > 1){
try {
method2();
} catch(Exception e) { //better add specific exception thrwon from method2
// handling the exception gracefully
}
} else{
// do something more
}
答案 1 :(得分:1)
我认为你要找的是这样的:
class A{
method1(){
int result = //do something
if(result > 1){
method2();
}else{
method3();
}
}
method2(){
try{
// do something
} catch(Exception e){ // If left at all exceptions, any error will call Method3()
//throw a message
//Move to call method3()
method3();
}
}
method3(){
//What you origianlly wanted to do inside the else block
}
}
}
在这种情况下,如果程序移动到方法2中的catch块中,程序将调用Method3。在Method1中,else块也调用method3。这将模仿程序从catch块“向后移动”到else块
答案 2 :(得分:0)
您需要一个双if
代替。
method1()
{
if(result > 1)
{
if(method2()) { execute code }
else { what you wanted to do in the other code }
}
}
和ofc让方法2返回一些东西(在这种情况下,我让它返回bool以便于检查)