• Aucun résultat trouvé

Les Exceptions

N/A
N/A
Protected

Academic year: 2022

Partager "Les Exceptions "

Copied!
12
0
0

Texte intégral

(1)

Les Exceptions

Java

(2)

Notion d'exception

En Java, les erreurs se propagent sous la forme d'exceptions

Une exception :

est un objet, instance d'une classe d'exception

provoque la sortie d'une méthode

correspond à un type d'erreur

contient des informations sur cette erreur

(3)

Classes d'exceptions

Une classe d'exception hérite de java.lang.Throwable

correspond à un type d'erreur

et encapsule les informations relatives à l'erreur

La méthode public String getMessage() retourne une chaîne de caractères décrivant l'exception

IndexOutOfBoundsException

NullPointerException

NumberFormatException

ClassCastException

(4)

Graphe d’héritage (partiel)

(5)

Déclaration des exceptions possibles

Chaque méthode doit déclarer les exceptions qu'elle peut émettre

La liste des exceptions possible est indiquée par throws suivi des classes d'exceptions concernées

public static int parseInt(String s) throws NumberFormatException {

}

(6)

Émission et création d'exceptions

Lorsqu'une erreur est détectée dans une méthode il faut :

- Créer un objet (de classe d'exception) - Émettre cette exception

int getValue(int pos) throws IndexOutOfBoundsException { if (pos > tab.length)

throw new IndexOutOfBoundsException("trop grand");

else return tab[pos];

}

(7)

Autre exemple

class MonException extends Exception { public MonException() { }

public MonException(String msg) { super(msg); } }

public static void g() throws MonException {

System.out.println("MonException levée dans g()");

if (x=0)

throw new MonException("démarrée en g()");

}

(8)

Nouvelles exceptions

public class FilePleineException extends Exception { … } public class FileVideException extends Exception { … }

(9)

Traitement des exceptions

Si une méthode peut émettre une exception (ou appelle une autre méthode qui peut en émettre une)

il faut :

 soit propager l'exception

(la méthode doit l'avoir déclarée)

 soit intercepter et traiter l'exception

(10)

Propagation d'exceptions

public int ajouter(int a, String str) throws NumberFormatException int b = Integer.parseInt(str);

a = a + b;

return a;

}

Throws précise les exceptions susceptibles d’être levées (ou propagées) par cette méthode

(11)

Interception d'exceptions

public int ajouter(int a, String str) { try {

int b = Integer.parseInt(str);

a = a + b;

}

catch (NumberFormatException e) {

System.out.println(e.getMessage());

}

Finally {

// bloc toujours exécuté }

}

(12)

(Heureusement !)

pour toutes les classes dérivées

ArithmeticException, ArrayStoreException,

BufferOverflowException, BufferUnderflowException, CannotRedoException, CannotUndoException,

ClassCastException, CMMException,

ConcurrentModificationException, DOMException, EmptyStackException, IllegalArgumentException,

IllegalMonitorStateException, IllegalPathStateException, IllegalStateException, ImagingOpException,

IndexOutOfBoundsException, MissingResourceException, NegativeArraySizeException, NoSuchElementException, NullPointerException, ProfileDataException,

ProviderException, RasterFormatException, SecurityException, SystemException, UndeclaredThrowableException,

try/catch n’est pas obligatoire

Références

Documents relatifs

En Java une exception est un objet Création de l’objet plantage Déclenchement d’un plantage... Et récupération de ce plantage!.. Rupture de calcul = Exceptions. Une exception est

Les Exception susceptibles d’être levées dans une méthode doivent être déclarée dans la signature de la méthode via le mot clé throws. Les RuntimeException sont des

Le code précédent ne marche pas bien car close() peut aussi lever une exception qui peut masquer l’exception lancer dans le try. try(BufferedReader

si lorsqu’il n’a pas accès à une ressource met la thread courante en attente jusqu’à ce que la resource arrive. –

● Si l'on appel une méthode qui lève une exception non runtime.. – Catch si l'on peut reprendre sur l'erreur et faire quelque chose de

Lien entre une m´ethode et un type d’exception.- Comme d’habitude en Java, le lien doit ˆetre explicite entre une m´ethode dans laquelle on lance une exception et la

„ Le contenu d'une classe exception peut être vide, dans ce cas seul le nom de la classe importe.. „ Il peut aussi permettre s'il est non vide de gérer des informations sur

Le programme qui suit lance une ArithmeticException avec le message "Mauvais calcul !" dans la méthode meth() et intercepte cette exception dans le bloc englobant main..