2015-04-07 3 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

Wrap это 'примерка catch' в _another_' Try-catch'. –

+0

Не делайте этого. «Log-and-throw» уже десятилетиями идентифицируется как анти-шаблон. – EJP

ответ

2

Просто добавьте еще одну попытку поймать в улове.

try { 
    try { 

     throw new NullPointerException(); 

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

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

Не знаю, почему вы получили downvoted, это именно то, что мне нужно. Благодарю. – ninesalt

0

Вам придется sorround весь код, который может бросить исключение с TRY/поймать блок

try { 

      throw new NullPointerException(); 
     } 
     catch (NullPointerException e) { 
      System.out.println("reached once"); 
      try{ 
       throw e; 
      } 
      catch (Exception ex) { 
       System.out.println("reached twice"); 
      } 
     } 
Смежные вопросы