2

这是一个示例:

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 块时,我希望程序继续执行并返回到 Method 1 中的 else 块。我该如何实现呢?

谢谢你的帮助。

4

3 回答 3

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
}
于 2013-10-31T17:13:07.567 回答
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 块也调用方法 3。这将模仿程序从 catch 块“移回”到 else 块

于 2013-10-31T17:30:13.120 回答
0

你需要一个双倍的if

method1()
{
    if(result > 1)
    {
        if(method2()) { execute code }
        else { what you wanted to do in the other code }
    }
}

和 ofc 让方法 2 返回一些东西(在这种情况下,我让它返回 bool 以便于检查)

于 2013-10-31T17:17:23.750 回答