Si j'invoque la méthode qui attrape cette exception em>? Est-ce que l'exception em> est-elle attrapée? P> exécution () code> sur un thread et la exécution () code> méthode jette une exception
3 Réponses :
Il peut si vous l'attribuez à un qui implémente le inconceptionException (fil, lanceur) méthode. P>
S'il y a un gestionnaire d'exception installé pour le groupe ThreadGroup, le JVM transmet l'exception à l'exception. Si c'est un thread AWT, vous pouvez installer un gestionnaire d'événements pour des exceptions non manquées par ailleurs. Sinon, la JVM le gère.
Exemple d'un groupe de fil avec un gestionnaire personnalisé et comment l'utiliser: p> exemple d'utilisation d'un gestionnaire d'exception AWT: P > public class MyExceptionHandler {
public void handle(Throwable ex) {
// Handle exception
}
public void handle(Thread t, Throwable ex) {
// Handle exception
}
}
System.setProperty("sun.awt.exception.handler", MyExceptionHandler.class.getName());
"Sinon, le JVM le gère." Pour être plus précis, le fil qui a soulevé l'exception mourir silencieusement.
@Stephen: En fait, il imprime l'exception à STDRERR.
Vraiment? Il doit être spécifique JVM alors ... parce que j'ai été déclenché par l'absence d'une trace de pile.
Bien sûr, ce sera la mise en œuvre définie. Je ne suggérais pas que quelqu'un compte dessus. Je voulais juste dire que c'était à la JVM de décider quoi faire avec des exceptions non gérées.
Si vous avez soumis le fichier runnable à un Exécutorservice Vous pouvez attraper l'exception comme enveloppé à l'intérieur d'un ExecutionException . (Fortement recommandé sur simplement appeler la course ()) p>
Pour que cela soit plus clair - vous n'invoyez pas Run () - Vous appelez Démarrer () sur le thread pour rendre le code dans la méthode RUN () exécutée dans un nouveau fil. Invoquant Run () Il fait directement que la méthode d'exécution soit exécutée dans le fil actuel.