2015-07-04 3 views
-1

Когда я выполняю этот код, я получаю caughtjava.lang.CloneNotSupportedException в качестве выхода! Почему не поймано NullPointerException?Несколько исключений

package arrays; 

public class NestedTry { 
    public static void main(String s[]) 
    { 
     try{ 
      try{ 
       throw new NullPointerException(); 
      } 
      finally{ 
       throw new CloneNotSupportedException(); 
      } 
     } 
     catch(Exception e) 
     { 
      System.out.println("caught"+e.toString()); 
      //which excpetion will be printed here?? :P 
     } 
    } 
} 

ответ

1

Просто beacuse finally блок выполняется точно.

try{ 
     throw new NullPointerException(); 
    } 
    finally{ 
     throw new CloneNotSupportedException(); 
     } 

В приведенном выше коде первый NullPointerException() брошено, но для этого try, finally блок снова бросает CloneNotSupportedException();

Так в конечном счете

catch(Exception e) 
{ 
    System.out.println("caught"+e.toString()); 
    //which excpetion will be printed here?? :P 
} 

выше catch вместо того, чтобы ловить NullPointerException ловит finally блок CloneNotSupportedException и отпечатки caughtjava.lang.CloneNotSupportedException.

Смежные вопросы