即使在程序捕获异常后仍继续执行

时间:2013-10-31 17:11:46

标签: java exception-handling

这是一个示例:

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块。我该如何实现?

感谢您的帮助。

3 个答案:

答案 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以便于检查)