« Programmation Java/Exceptions » : différence entre les versions

Contenu supprimé Contenu ajouté
Aucun résumé des modifications
Ligne 315 :
 
Il est possible de traiter les exceptions non capturées par un thread.
L'interface <code>java.lang.Thread.UncaughtExceptionHandler</code> définie dans la classe <code>java.lang.Thread</code> a une méthode <code>uncaughtException</code> notifiée lorsqu'un thread n'a pas capturé une exception.
 
Exemple d'implémentation :
<syntaxhighlight lang="java">
UncaughtExceptionHandler eh = new UncaughtExceptionHandler()
{
@Override
public void uncaughtException(Thread t, Throwable e)
{
System.out.println("Une exception "+e);
System.out.println("a eu lieu dans le thread "+t);
}
};
</syntaxhighlight>
 
Ce gestionnaire peut ensuite être assigné à différent niveaux :
* au niveau global pour tous les threads de l'application en appelant la méthode statique <code>setDefaultUncaughtExceptionHandler</code> de la classe <code>java.lang.Thread</code> :
*:<syntaxhighlight lang="java" inline>Thread.setDefaultUncaughtExceptionHandler(eh);</syntaxhighlight>
* au niveau d'un thread en appelant la méthode d'instance <code>setUncaughtExceptionHandler</code> :
*:<syntaxhighlight lang="java" inline>thread_telechargement.setUncaughtExceptionHandler(eh);</syntaxhighlight>
* au niveau d'un groupe de threads <code>java.lang.ThreadGroup</code> car cette classe implémente l'interface <code>UncaughtExceptionHandler</code> :
*:<syntaxhighlight lang="java">
ThreadGroup tg_telechargeurs = new ThreadGroup()
{
@Override
public void uncaughtException(Thread t, Throwable e)
{
System.out.println("Une exception "+e);
System.out.println("a eu lieu dans le thread "+t);
}
};
Thread telecharge_html = new Thread(tg_telechargeurs, run_get_html);
Thread telecharge_css = new Thread(tg_telechargeurs, run_get_css);
Thread telecharge_js = new Thread(tg_telechargeurs, run_get_js);
</syntaxhighlight>
 
== Voir aussi ==