Junior
Comment lancer correctement des exceptions en Java?
sobes.tech IA
Réponse de l'IA
Les exceptions doivent être levées lorsqu'une situation anormale survient, perturbant l'exécution normale du programme et nécessitant une intervention immédiate.
Principes fondamentaux :
- Utilisez les exceptions pour signaler des erreurs, pas pour contrôler le flux d'exécution.
- Choisissez le type d'exception le plus approprié dans la bibliothèque standard.
- Créez vos propres classes d'exceptions lorsque celles standard ne fournissent pas suffisamment d'informations.
- Incluez dans le message d'exception des détails sur la cause de l'erreur, y compris le contexte.
- Ne capturez pas les exceptions que vous ne pouvez pas gérer correctement. Il est préférable de les propager vers le haut de la pile d'appels.
- Utilisez les blocs
try-with-resourcespour fermer automatiquement les ressources. - Enregistrez les exceptions que vous traitez ou que vous propagez à un niveau supérieur.
Syntaxe correcte : throw new MyException("Message d'erreur");
Exemple :
// Création d'une exception personnalisée
public class InvalidParameterException extends Exception {
public InvalidParameterException(String message) {
super(message);
}
}
// Méthode qui lance une exception
public int divide(int a, int b) throws InvalidParameterException {
if (b == 0) {
throw new InvalidParameterException("Division par zéro non autorisée");
}
return a / b;
}
// Utilisation de la méthode et gestion de l'exception
public void performDivision(int x, int y) {
try {
int result = divide(x, y);
System.out.println("Résultat : " + result);
} catch (InvalidParameterException e) {
// Journalisation de l'erreur
System.err.println("Erreur lors de la division : " + e.getMessage());
// Traitement supplémentaire ou propagation
}
}
Différences entre exceptions Checked et Unchecked :
| Type d'exception | Héritage de | Nécessite une gestion/déclaration | Exemple |
|---|---|---|---|
| Checked | Exception (sauf RuntimeException) |
Oui (try-catch ou throws) |
IOException, SQLException |
| Unchecked | RuntimeException |
Non (le compilateur ne l'exige pas) | NullPointerException, ArrayIndexOutOfBoundsException |