↑
CHAPITRE 9.3

Exceptions personnalisées

Créer vos propres exceptions
Vous pouvez créer vos propres exceptions personnalisées pour représenter des erreurs spécifiques à votre application. Cette section montre comment créer et utiliser des exceptions personnalisées.

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