Java - Custom Exception

Bonjour là-bas, futurs magiciens Java ! Aujourd'hui, nous allons plonger dans le monde magique des exceptions personnalisées en Java. Ne vous inquiétez pas si vous êtes nouveau dans la programmation ; je vais vous guider à travers ce voyage étape par étape, comme j'ai fait pour des centaines d'étudiants au fil des ans. Alors, sortez vos baguettes virtuelles (claviers), et mettons-nous à jeter quelques sorts d'exceptions !

Java - Custom Exception

Qu'est-ce que les exceptions ?

Avant de nous plonger dans les exceptions personnalisées, récapitulons rapidement ce qu'elles sont en Java. Imaginez que vous cuisinez un délicieux repas, mais soudain vous vous rendez compte que vous manquez d'un ingrédient crucial. C'est similaire à une exception en programmation - c'est un événement inattendu qui perturbe le flux normal de votre programme.

Java fournit de nombreuses exceptions intégrées, mais parfois, nous avons besoin de créer les nôtres. C'est là que les exceptions personnalisées deviennent utiles !

Besoin d'exceptions personnalisées en Java

Vous pourriez vous demander : "Pourquoi avons-nous besoin d'exceptions personnalisées alors que Java en a déjà tant ?" Eh bien, laissez-moi expliquer avec une analogie amusante.

Imaginez que vous jouez à un jeu de "Attrapez l'exception". Les exceptions intégrées de Java sont comme des balles standard, mais parfois, vous avez besoin d'une balle spéciale qui s'adapte parfaitement à votre main. C'est ce que sont les exceptions personnalisées - taillées pour répondre à vos besoins spécifiques de programme !

Les exceptions personnalisées nous permettent de :

  1. Créer des messages d'erreur plus significatifs
  2. Grouper des exceptions apparentées
  3. Ajouter des propriétés supplémentaires aux exceptions

Créer une exception personnalisée en Java

Maintenant, mettons-nous au travail et créons notre première exception personnalisée ! C'est plus simple que vous ne le pensez.

Voici la structure de base :

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

Reprenons cela :

  1. Nous créons une nouvelle classe et lui donnons un nom (dans ce cas, MonExceptionPersonnalisee).
  2. Nous étendons la classe Exception (ou RuntimeException si nous voulons une exception non vérifiée).
  3. Nous créons un constructeur qui prend un message String.
  4. Nous appelons le constructeur de la superclasse en utilisant super(message).

Exemple d'exception personnalisée en Java

Créons un exemple plus pragmatique. Imaginez que nous développons une application bancaire, et nous voulons créer une exception personnalisée pour le cas où quelqu'un essaie de retirer plus d'argent que celui qu'il a sur son compte.

public class InsufficientFundsException extends Exception {
private double amount;

public InsufficientFundsException(double amount) {
super("Désolé, fonds insuffisants. Vous avez besoin de " + amount + " de plus.");
this.amount = amount;
}

public double getAmount() {
return amount;
}
}

Maintenant, voyons comment nous pouvons utiliser cette exception dans notre classe BankAccount :

public class BankAccount {
private double balance;

public BankAccount(double initialBalance) {
this.balance = initialBalance;
}

public void withdraw(double amount) throws InsufficientFundsException {
if (amount > balance) {
double needs = amount - balance;
throw new InsufficientFundsException(needs);
}
balance -= amount;
System.out.println("Retrait réussi. Nouveau solde : " + balance);
}
}

Et voici comment nous pourrions l'utiliser dans notre programme principal :

public class BankingApp {
public static void main(String[] args) {
BankAccount account = new BankAccount(100);
try {
account.withdraw(150);
} catch (InsufficientFundsException e) {
System.out.println(e.getMessage());
System.out.println("Vous devez déposer au moins : " + e.getAmount());
}
}
}

Lorsque vous exécutez ce programme, il affichera :

Désolé, fonds insuffisants. Vous avez besoin de 50.0 de plus.
Vous devez déposer au moins : 50.0

N'est-ce pas génial ? Nous avons créé une exception personnalisée qui non seulement nous indique qu'il y a une erreur, mais fournit également des informations utiles sur combien d'argent supplémentaire est nécessaire !

Exemple : Créer une classe personnalisée en étendant RuntimeException

Parfois, vous pourriez vouloir créer une exception non vérifiée. Dans ce cas, vous étendriez RuntimeException au lieu de Exception. Voici un exemple :

public class InvalidAgeException extends RuntimeException {
public InvalidAgeException(String message) {
super(message);
}
}

Et voici comment vous pourriez l'utiliser :

public class Person {
private int age;

public void setAge(int age) {
if (age < 0 || age > 150) {
throw new InvalidAgeException("L'âge doit être entre 0 et 150");
}
this.age = age;
}
}

Dans ce cas, nous n'avons pas besoin de déclarer l'exception dans la signature de la méthode ni de la attraper explicitement (bien que ce soit souvent une bonne idée de le faire).

Conclusion

Et voilà, camarades ! Vous avez juste appris comment créer et utiliser des exceptions personnalisées en Java. Souvenez-vous, les exceptions personnalisées sont comme votre couteau suisse dans le monde de la programmation - elles vous aident à gérer les erreurs plus efficacement et rendent votre code plus lisible et plus facile à maintenir.

Alors que vous continuez votre voyage en Java, vous trouverez de plus en plus d'utilisations pour les exceptions personnalisées. Elles sont un outil puissant dans votre boîte à outils de programmation, vous aidant à créer des applications robustes et conviviales.

Continuez à vous entraîner, continuez à coder, et surtout, amusez-vous ! Après tout, comme je le dis toujours à mes étudiants, la programmation est comme de la magie - vous créez quelque chose à partir de rien. Et maintenant, vous pouvez même contrôler comment votre programme se comporte lorsque les choses ne se passent pas comme prévu. Combien c'est cool, non ?

Jusqu'à la prochaine fois, bon codage !

Credits: Image by storyset