2015-04-07 29 views
-2
try { 

     throw new SomeException(); 

    } 

    catch (SomeException e) { 

     System.out.println("reached once"); 
     throw e; 
    } 

    catch (Exception e) { 
     System.out.println("reached twice"); 
    } 

即使在第一个catch子句中再次抛出异常,此代码也只显示“达到一次”。为了执行这两个catch子句,如何解决这个问题?如何捕获抛出catch子句中的异常?

PS:上面的代码是我的一个普遍问题,我不得不将它应用到一个更大的代码中,它带有大约5个或6个catch子句,它们捕获不同的异常,但最后,在某个点循环我需要再次抛出异常。

+1

包装这个'尝试,catch'在_another_'尝试,catch'。 –

+0

不要这样做。数十年来,“登录并投掷”已被确定为反模式。 – EJP

回答

2

只需在catch中添加另一个try catch。

try { 
    try { 

     throw new NullPointerException(); 

    } catch (NullPointerException e) { 
     System.out.println("reached once"); 

     throw e; 
    } 
} catch (SomeOtherException ex) {} 
+0

不知道你为什么被低估,这正是我需要的。谢谢。 – ninesalt

0

你必须sorround所有代码,可以抛出一个异常一个try/catch块

try { 

      throw new NullPointerException(); 
     } 
     catch (NullPointerException e) { 
      System.out.println("reached once"); 
      try{ 
       throw e; 
      } 
      catch (Exception ex) { 
       System.out.println("reached twice"); 
      } 
     }