11
votes

Que se passe-t-il quand un fil envoie une exception?

Si j'invoque la méthode exécution () sur un thread et la exécution () méthode jette une exception non capturée quel serait le résultat ?

qui attrape cette exception ? Est-ce que l'exception est-elle attrapée?


1 commentaires

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.


3 Réponses :


0
votes

Il peut si vous l'attribuez à un qui implémente le inconceptionException (fil, lanceur) méthode.


0 commentaires

9
votes

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> xxx pré>

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());


4 commentaires

"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.



1
votes

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 ())


0 commentaires