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.

SyntaxeCréation d'une exception

Nous pouvons définir notre propre classe d'exception comme ci-dessous :

1
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.

ExempleExceptions vérifiées personnalisées

Les exceptions Checked sont des exceptions qui doivent être traitées explicitement.

1
public class IncorrectFileNameException extends Exception { 
2
    public IncorrectFileNameException(String errorMessage) {
3
        super(errorMessage);
4
    }
5
}

Notez que nous devons également fournir un constructeur qui prend une chaîne comme message d'erreur et appelle le constructeur de classe parent.

ExempleLes 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.

1
public class IncorrectFileExtensionException 
2
  extends RuntimeException {
3
    public IncorrectFileExtensionException(String errorMessage, Throwable err) {
4
        super(errorMessage, err);
5
    }
6
}

ComplémentUtilisation 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.

1
import java.io.File;
2
import java.io.FileNotFoundException;
3
import java.util.Scanner;
4
5
public class FileNotFoundStudi {
6
7
    public static void main(String[] args) throws IncorrectFileNameException {
8
        String fileName = "fichierInexistant.txt";
9
        try (Scanner file = new Scanner(new File(fileName))) {
10
            if (file.hasNextLine()) {
11
                file.nextLine();
12
            } else {
13
                throw new IllegalArgumentException("Non readable file");
14
            }
15
        } catch (FileNotFoundException err) {
16
                throw new IncorrectFileNameException("Incorrect filename : ", err);
17
        } catch (IllegalArgumentException err) {
18
                throw new IncorrectFileExtensionException("Filename does not contain extension : ", err);
19
            }
20
        }
21
22
    static class IncorrectFileNameException extends Exception {
23
        public IncorrectFileNameException(String errorMessage, FileNotFoundException err) {
24
            super(errorMessage);
25
        }
26
    }
27
28
    static class IncorrectFileExtensionException
29
            extends RuntimeException {
30
        public IncorrectFileExtensionException(String errorMessage, Throwable err) {
31
            super(errorMessage, err);
32
        }
33
    }
34
}

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.