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 classejava.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 attributsnom
,prenom
etage
. Dans le constructeur de la classePersonne
, 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’exceptionAgeInvalideException
avec un message d’erreur personnalisé. - Nous ajoutons des méthodes
getNom()
,getPrenom()
etgetAge()
pour accéder aux attributs privés. - Dans la méthode
main
, nous créons une instance de la classePersonne
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 clausecatch
.
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 classejava.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 attributsnom
,prenom
etdateNaissance
. Dans le constructeur de la classePersonne
, nous essayons de parser la chaîne de caractèresdateNaissanceStr
en un objetLocalDate
. Si cela échoue, nous lançons une instance de l’exceptionDateNaissanceInvalideException
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