2016-06-11 1 views
-2

Supposons que j'ai un try - bloc finally sans bloc catch, nous lançons une exception dans le bloc try. Suis-je capable d'attraper cette exception?Peut-on attraper une exception sans bloc catch?

public static void main(String[] args) throws IOException{ 
    try { 
     throw new IOException("Something went wrong"); 
    } finally{ 
    } 
} 
+4

Le code que vous avez il n'y aura pas de compiler. Vous pouvez attraper l'exception en ajoutant un bloc 'catch'. – Dando18

+2

Si vous voulez attraper une exception, utilisez un bloc 'de catch'. –

+2

La question n'a aucun sens :) –

Répondre

4

Oui, c'est possible.

Vous pouvez utiliser un gestionnaire d'exception non interceptée. Sa responsabilité est d'attraper les exceptions que votre programme n'a pas attrapées, et de faire quelque chose avec elle.

public static void main(String[] args) throws IOException { 
    Thread.setDefaultUncaughtExceptionHandler((thread, thr) -> thr.printStackTrace()); 
    throw new IOException("Something went wrong"); 
} 

setDefaultUncaughtExceptionHandler est une méthode qui enregistrera un gestionnaire qui sera appelée lorsqu'une exception a été jeté en un fil et n'a pas été pris. Le code ci-dessus imprime la pile de la pile traitable.

Le gestionnaire prend comme argument le fil où l'exception a eu lieu et la throwable qui a été jeté.

Vous pouvez également avoir un gestionnaire par thread en utilisant setUncaughtExceptionHandler sur une instance Thread. Ce gestionnaire traiterait toutes les exceptions non interceptées lancées à partir de ce thread.

+0

Jamais entendu parler mais ça marche. – SHE