Les exceptions personnalisées
Objectifs
Créer les exceptions personnalisées
Comprendre les exceptions personnalisées (vérifiées et non vérifiées)
Mise en situation
Les exceptions Java couvrent presque toutes les exceptions générales qui sont liées à la programmation.
Cependant, nous devons parfois compléter ces exceptions standards par les nôtres.
Syntaxe : Création d'une exception
Nous pouvons définir notre propre classe d'exception comme ci-dessous :
class MyException extends Exception { ... }
Il suffit d'étendre la classe d'exception prédéfinie pour créer votre propre exception
Conseil :
Toutes les exceptions doivent étendre la classe Throwable.
Exceptions vérifiées/non vérifiées personnalisées : pour créer une exception non vérifiée personnalisée, nous devons étendre la classe java.lang.Exception.
Exemple : Exceptions vérifiées personnalisées
Les exceptions Checked sont des exceptions qui doivent être traitées explicitement.
public class IncorrectFileNameException extends Exception {
public IncorrectFileNameException(String errorMessage) {
super(errorMessage);
}
}
Notez que nous devons également fournir un constructeur qui prend une chaîne comme message d'erreur et appelle le constructeur de classe parent.
Exemple : Les exceptions non vérifiées personnalisées
Reprenons l'exemple du programme qui tente en vain d'ouvrir un fichier.
Supposons que nous ayons besoin d'une exception personnalisée si le nom de fichier ne contient aucune extension.
public class IncorrectFileExtensionException
extends RuntimeException {
public IncorrectFileExtensionException(String errorMessage, Throwable err) {
super(errorMessage, err);
}
}
Complément : Utilisation des exceptions personnalisées
Voyons comment nous pouvons utiliser les exceptions personnalisées que nous venons d'écrire dans notre exemple de programme lecteur de fichier.
import java.io.File;
import java.io.FileNotFoundException;
import java.util.Scanner;
public class FileNotFoundStudi {
public static void main(String[] args) throws IncorrectFileNameException {
String fileName = "fichierInexistant.txt";
try (Scanner file = new Scanner(new File(fileName))) {
if (file.hasNextLine()) {
file.nextLine();
} else {
throw new IllegalArgumentException("Non readable file");
}
} catch (FileNotFoundException err) {
throw new IncorrectFileNameException("Incorrect filename : ", err);
} catch (IllegalArgumentException err) {
throw new IncorrectFileExtensionException("Filename does not contain extension : ", err);
}
}
static class IncorrectFileNameException extends Exception {
public IncorrectFileNameException(String errorMessage, FileNotFoundException err) {
super(errorMessage);
}
}
static class IncorrectFileExtensionException
extends RuntimeException {
public IncorrectFileExtensionException(String errorMessage, Throwable err) {
super(errorMessage, err);
}
}
}
Syntaxe : À retenir
Vous pouvez créer vos propres exceptions en Java. Gardez les points suivants à l'esprit lorsque vous écrivez vos propres classes d'exceptions :
Toutes les exceptions doivent hériter de la classe Throwable.
Si vous souhaitez écrire une exception vérifiée, vous devez étendre la classe Exception.
Si vous souhaitez écrire une exception d'exécution, vous devez étendre la classe RuntimeException.