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

Contenu supprimé Contenu ajouté
Aucun résumé des modifications
Ligne 300 :
 
Le bloc <code>try</code> pour cette syntaxe peut accepter des blocs <code>catch</code> pour traiter des exceptions ou <code>finally</code> pour libérer des ressources, mais sont optionnels.
 
== Exceptions non capturées ==
 
Une exception lancée explicitement ou implicitement depuis une méthode peut ne pas être capturée.
Dans ce cas, elle est remontée au niveau de la méthode appelante.
La classe de cette exception (ou une classe parente) doit être [[#Levée d'exception|déclarée dans une clause <code>throws</code>]] à la fin de la déclaration de la méthode appelée, à moins que la classe soit une sous-classe de <code>java.lang.RuntimeException</code> ou une sous-classe de <code>java.lang.Throwable</code> autre que <code>java.lang.Exception</code> (<code>java.lang.Error</code> pax exemple).
 
La méthode <code>main</code> peut aussi déclarer des exceptions.
Quand la méthode <code>main</code> ne capture pas une exception, celle-ci remonte à l'appelant (code interne de la JVM) qui affiche l'exception dans la console (flux d'erreur standard), et provoque donc l'arrêt de l'application si aucun thread non démon ne tourne.
 
Pour [[../Processus légers et synchronisation|un thread]], la méthode <code>run()</code> des implémentations de l'interface <code>java.lang.Runnable</code> ne peut pas déclarer d'exceptions lancées.
Cela ne l'empêche pas de remonter les exceptions non déclarées (<code>java.lang.RuntimeException</code>, <code>java.lang.Error</code>, et leurs sous-classes).
Dans ce cas, le thread est interrompu et la JVM affiche l'exception dans la console (flux d'erreur standard).
 
Il est possible de traiter les exceptions non capturées par un thread.
 
== Voir aussi ==