Table des matières
ToggleL'article explique les bases de la gestion des exceptions en Java
et met en lumière les concepts clés suivants :
final, finally et finalize()
1. final
- Modificateur pouvant être appliqué aux classes, méthodes et variables :
- Une classe final ne peut pas être étendue (pas d’héritage possible).
- Une méthode final ne peut pas être redéfinie dans une classe fille, empêchant le polymorphisme à l’exécution.
- Une variable final ne peut pas être réassignée à une nouvelle valeur.
2. finally
Bloc utilisé pour gérer les tâches de nettoyage dans une structure try-catch
. Le code dans le bloc finally
sera toujours exécuté, que l’exception soit levée ou non, et même si elle est gérée ailleurs.
3. finalize()
Méthode invoquée par le garbage collector avant la destruction d’un objet. Utilisée pour effectuer des activités de nettoyage relatives à l’objet avant qu’il ne soit retiré de la mémoire.
Mot-clé throw
Permet de lancer manuellement une exception vers la JVM.
throw new StringLengthException("Une chaîne est requise !");
- La classe d’exception doit hériter de
Throwable
, soit directement, soit viaException
ouRuntimeException
. - Aucune autre instruction ne peut être écrite après un
throw
.
Mot-clé throws
- Permet de déclarer qu'une méthode peut lever une ou plusieurs exceptions vérifiées.
- Deux façons de gérer les exceptions vérifiées :
- Utilisation d’un bloc
try-catch
. - Utilisation du mot-clé
throws
pour propager la responsabilité à l’appelant.
- Utilisation d’un bloc
Utilisable uniquement avec des méthodes ou des constructeurs. Applicable uniquement aux types dérivés de Throwable
, sinon cela génère une erreur de compilation.
Exceptions personnalisées
Les développeurs peuvent créer leurs propres exceptions pour répondre à des besoins spécifiques. Exemple :
class StringLengthException extends RuntimeException {
public StringLengthException(String message) {
super(message);
}
}
Recommandé d’hériter de RuntimeException
, car les exceptions dérivées de Exception
nécessitent une gestion explicite via un bloc try-catch
ou un mot-clé throws
.
Top 5 des exceptions les plus courantes
- NullPointerException : Lancée lorsqu’une référence
null
est utilisée pour accéder ou modifier un objet. - ArrayIndexOutOfBoundsException : Lancée lorsqu’un tableau est accédé avec un index invalide (négatif ou supérieur à sa taille).
- StackOverflowException : Erreur causée par un dépassement de la pile, souvent dû à une récursion infinie.
- IllegalArgumentException : Lancée lorsqu’un argument passé à une méthode est invalide ou inapproprié.
- IllegalStateException : Lancée lorsqu’une méthode est appelée alors que l’état de l’objet n’est pas compatible avec cette opération.