2015-04-07 24 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"); 
      } 
     }