9.3Exceptions personnalisées
9.3.1 – Création
Vous pouvez créer vos propres exceptions personnalisées pour représenter des erreurs spécifiques à votre application. Cela améliore la clarté du code et permet une gestion d'erreurs plus précise.
🔑 Créer une exception vérifiée
Pour créer une exception vérifiée, héritez de la classe Exception.
Exemple : Exception vérifiée personnalisée
// Exception vérifiée : doit être gérée
public class AgeInvalideException extends Exception {
public AgeInvalideException(String message) {
super(message); // Appelle le constructeur de Exception
}
}
⚠️ Créer une exception non vérifiée
Pour créer une exception non vérifiée, héritez de RuntimeException.
Exemple : Exception non vérifiée personnalisée
// Exception non vérifiée : gestion optionnelle
public class SoldeInsuffisantException extends RuntimeException {
public SoldeInsuffisantException(String message) {
super(message);
}
}
📝 Ajouter des informations supplémentaires
Vous pouvez ajouter des attributs et méthodes à votre exception pour fournir plus d'informations.
Exemple : Exception avec informations supplémentaires
public class AgeInvalideException extends Exception {
private int ageInvalide;
public AgeInvalideException(String message, int ageInvalide) {
super(message);
this.ageInvalide = ageInvalide;
}
public int getAgeInvalide() {
return ageInvalide;
}
}
9.3.2 – Utilisation
Pour utiliser une exception personnalisée, vous devez la lancer avec throw et la gérer ou la propager avec throws.
🚀 Lancer une exception (throw)
Exemple : Lancer une exception personnalisée
public class Personne {
private int age;
public void setAge(int age) throws AgeInvalideException {
if (age < 0 || age > 150) {
throw new AgeInvalideException("L'âge doit être entre 0 et 150 ans");
}
this.age = age;
}
}
🔄 Gérer une exception personnalisée
Exemple : Gestion d'exception personnalisée
public class Main {
public static void main(String[] args) {
Personne p = new Personne();
try {
p.setAge(-5); // Lève AgeInvalideException
} catch (AgeInvalideException e) {
System.out.println("Erreur : " + e.getMessage());
}
}
}
📊 Exemple complet
Exemple : Système bancaire avec exception personnalisée
// Exception personnalisée
public class SoldeInsuffisantException extends Exception {
private double solde;
private double montant;
public SoldeInsuffisantException(double solde, double montant) {
super("Solde insuffisant : " + solde + "€ pour retirer " + montant + "€");
this.solde = solde;
this.montant = montant;
}
public double getSolde() { return solde; }
public double getMontant() { return montant; }
}
// Utilisation
public class CompteBancaire {
private double solde;
public void retirer(double montant) throws SoldeInsuffisantException {
if (montant > solde) {
throw new SoldeInsuffisantException(solde, montant);
}
solde -= montant;
}
}
// Gestion
try {
compte.retirer(1000);
} catch (SoldeInsuffisantException e) {
System.out.println("Erreur : " + e.getMessage());
}
💡 Points clés à retenir
- Exception vérifiée : Hérite de
Exception, doit être gérée - Exception non vérifiée : Hérite de
RuntimeException, gestion optionnelle - throw : Pour lancer une exception
- throws : Pour déclarer qu'une méthode peut lever une exception
- Informations : Ajoutez des attributs pour plus de détails sur l'erreur