Java(exception) : Exercices corrigés

Exercice 1:

Écrire une classe d’exception personnalisée appelée AgeInvalideException qui sera lancée si l’âge d’une personne est négatif. Ensuite, écrire une classe Personne qui a les attributs nom, prenom et age. Dans le constructeur de la classe Personne, vérifiez que l’âge est supérieur ou égal à zéro. Si ce n’est pas le cas, lancez une instance de l’exception AgeInvalideException avec un message d’erreur personnalisé. Enfin, dans la méthode main, créez une instance de la classe Personne et affichez ses attributs.

Voici le code Java correspondant à cet exercice :

class AgeInvalideException extends Exception {
    public AgeInvalideException(String message) {
        super(message);
    }
}

class Personne {
    private String nom;
    private String prenom;
    private int age;

    public Personne(String nom, String prenom, int age) throws AgeInvalideException {
        if (age < 0) {
            throw new AgeInvalideException("L'âge ne peut pas être négatif.");
        }
        this.nom = nom;
        this.prenom = prenom;
        this.age = age;
    }

    public String getNom() {
        return nom;
    }

    public String getPrenom() {
        return prenom;
    }

    public int getAge() {
        return age;
    }
}

public class CustomExceptionExample {
    public static void main(String[] args) {
        try {
            Personne personne = new Personne("Dupont", "Pierre", 30);
            System.out.println("Nom : " + personne.getNom());
            System.out.println("Prénom : " + personne.getPrenom());
            System.out.println("Âge : " + personne.getAge());
        } catch (AgeInvalideException e) {
            System.out.println(e.getMessage());
        }
    }
}

Explications :

  • Nous créons une classe personnalisée appelée AgeInvalideException qui étend la classe java.lang.Exception. Cette classe sera utilisée pour lancer une exception lorsque l’âge d’une personne est négatif. Nous passons un message d’erreur personnalisé en paramètre du constructeur de la classe parent (super(message)).
  • Nous créons une classe Personne qui a les attributs nom, prenom et age. Dans le constructeur de la classe Personne, nous vérifions que l’âge est supérieur ou égal à zéro. Si ce n’est pas le cas, nous lançons une instance de l’exception AgeInvalideException avec un message d’erreur personnalisé.
  • Nous ajoutons des méthodes getNom(), getPrenom() et getAge() pour accéder aux attributs privés.
  • Dans la méthode main, nous créons une instance de la classe Personne avec un âge valide. Nous affichons ensuite les attributs de la personne en utilisant les méthodes d’accès.
  • Si une instance de l’exception AgeInvalideException est lancée, nous affichons le message d’erreur personnalisé en utilisant une clause catch.

Lorsque vous exécutez ce programme, vous pouvez créer une instance de la classe Personne

Exercice 2:

Voici une autre version de l’exercice qui utilise une classe Personne avec une date de naissance :

Écrire une classe d’exception personnalisée appelée DateNaissanceInvalideException qui sera lancée si la date de naissance d’une personne n’est pas valide. Ensuite, écrire une classe Personne qui a les attributs nom, prenom et dateNaissance. Dans le constructeur de la classe Personne, vérifiez que la date de naissance est valide. Si ce n’est pas le cas, lancez une instance de l’exception DateNaissanceInvalideException avec un message d’erreur personnalisé. Enfin, dans la méthode main, créez une instance de la classe Personne et affichez ses attributs.

Voici le code Java correspondant à cet exercice :

import java.time.LocalDate;
import java.time.format.DateTimeParseException;

class DateNaissanceInvalideException extends Exception {
    public DateNaissanceInvalideException(String message) {
        super(message);
    }
}

class Personne {
    private String nom;
    private String prenom;
    private LocalDate dateNaissance;

    public Personne(String nom, String prenom, String dateNaissanceStr) throws DateNaissanceInvalideException {
        try {
            this.dateNaissance = LocalDate.parse(dateNaissanceStr);
        } catch (DateTimeParseException e) {
            throw new DateNaissanceInvalideException("La date de naissance doit être au format yyyy-MM-dd.");
        }

        LocalDate today = LocalDate.now();
        if (dateNaissance.isAfter(today)) {
            throw new DateNaissanceInvalideException("La date de naissance ne peut pas être dans le futur.");
        }

        this.nom = nom;
        this.prenom = prenom;
    }

    public String getNom() {
        return nom;
    }

    public String getPrenom() {
        return prenom;
    }

    public LocalDate getDateNaissance() {
        return dateNaissance;
    }
}

public class CustomExceptionExample {
    public static void main(String[] args) {
        try {
            Personne personne = new Personne("Dupont", "Pierre", "1990-01-01");
            System.out.println("Nom : " + personne.getNom());
            System.out.println("Prénom : " + personne.getPrenom());
            System.out.println("Date de naissance : " + personne.getDateNaissance());
        } catch (DateNaissanceInvalideException e) {
            System.out.println(e.getMessage());
        }
    }
}

Explications :

  • Nous créons une classe personnalisée appelée DateNaissanceInvalideException qui étend la classe java.lang.Exception. Cette classe sera utilisée pour lancer une exception lorsque la date de naissance d’une personne est invalide. Nous passons un message d’erreur personnalisé en paramètre du constructeur de la classe parent (super(message)).
  • Nous créons une classe Personne qui a les attributs nom, prenom et dateNaissance. Dans le constructeur de la classe Personne, nous essayons de parser la chaîne de caractères dateNaissanceStr en un objet LocalDate. Si cela échoue, nous lançons une instance de l’exception DateNaissanceInvalideException avec un message d’erreur personnalisé. Ensuite, nous vérifions si la date de naissance est dans le futur en comparant la date actuelle avec la date