APPROCHE
ORIENTÉE
OBJET POO - CPP
Dr. Soukeina Ben Chikha
(C) SOUKEINA BEN CHIKHA 1
©[Link]
Le langage JAVA
Les exceptions
Dr. Soukeina Ben Chikha
©[Link]
Sommaire
● Introduction : qu’est-ce qu’une exception ?
● Gestion des exceptions
○ Définir des exceptions
○ Lancer une exception
○ Rattraper une exception
○ Rattraper plusieurs exceptions
○ Déclaration throws
● Exemples :
○ Lecture à partir du clavier
3
3 ©[Link]
Introduction : qu’est ce que une exception
• Une exception, c’est une erreur qui se produit lors de l’exécution
d’une application. Par exemple:
• une division par zéro soulève une exception,
• l’utilisation de l’indice 10 d’un tableau de 10 éléments (de 0 à 9).
• la fonction factorielle n’est pas définie pour les nombres
négatifs
• …
• Le traitement des exceptions permet de réagir d’une façon
spécifique lorsqu’un problème survient.
4 ©[Link]
L’exception- Exemple
public class App
{
public static void main(String args[]) {
App instance = new App();
[Link]();
}
public void methode()
{
int i = 0;
i = 2/i;
}}
-------------------------------------------------------------------------------
----------------------------------------------------
Exception in thread “main” [Link]: / by zero
at [Link]([Link])
5 ©[Link]
Introduction : qu’est ce que une exception
● Une exception représente une erreur. Il est possible de lancer/lever une
exception pour signaler une erreur.
● Lever une exception signifiait:
○ Interrompre définitivement le programme avec un message d’erreur
décrivant l’exception en question.
○ Cependant, on peut se trouver dans une situation où le programmeur
aimerait gérer les erreurs sans que le programme ne s’arrête
définitivement.
6 ©[Link]
Définir des exceptions
● Définir une nouvelle sorte d’exception, on crée une nouvelle classe
en utilisant une déclaration de la forme suivante :
class NouvelleException extends ExceptionDejaDefinie {}
● Exemple :
○ Sachant que Error est prédéfinie en Java :
class PasDefini extends Error {}
7 ©[Link]
Définir des exceptions
● Il existe de nombreuses classes d’exceptions prédéfinies en Java, que l’on peut
classer en trois catégories :
○ Celles définies en étendant la classe Error .
○ Celles définies en étendant la classe Exception.
○ Celles définies en étendant la classe RuntimeException.
8 ©[Link]
Définir des exceptions
● Exceptions de la classe Error : elles représentent des erreurs
critiques qui ne sont pas censée être gérées en temps normal.
○ Par exemple, une exception de type OutOfMemoryError est
lancée lorsqu’il n’y a plus de mémoire disponible dans le
système.
9 ©[Link]
Définir des exceptions
● Exceptions de la classe Exception : elles représentent les
erreurs qui doivent normalement être gérées par le
programme.
○ Par exemple, une exception de type IOException est lancée
en cas d’erreur lors de la lecture d’un fichier.
1 ©[Link]
Définir des exceptions
● Exceptions de la classe RuntimeException : elles représentent
des erreurs pouvant éventuellement être gérée par le
programme.
○ L’exemple typique de ce genre d’exception est
NullPointerException, qui est lancée si l’on tente d’accéder au
contenu d’un tableau ou d’un objet qui vaut null.
1 ©[Link]
Introduction : qu’est ce que une exception
● Une exception représente une erreur. Il est possible de lancer une exception
pour signaler une erreur.
● Lever une exception signifiait:
○ Interrompre définitivement le programme avec un message d’erreur
décrivant l’exception en question.
○ Cependant, on peut se trouver dans une situation où le programmeur
aimerait gérer les erreurs sans que le programme ne s’arrête définitivement.
1 ©[Link]
Lancer une exception
● Lorsqu’on veut lancer une exception, on utilise le mot clé throw suivi de
l’exception à lancer, qu’il faut auparavant avoir créée avec new NomException().
● Ainsi lancer une exception de la classe PasDefini s’écrit :
throw new PasDefini();
● Lorsqu’une exception est levée, l’exécution normale du programme s’arrête et on
saute toutes les instructions jusqu’à ce que :
○ l’exception soit rattrapée
○ Ou que l’on sorte du programme.
1 ©[Link]
L’exception- Exemple
14 ©[Link]
L’exception- Exemple
1 ©[Link]
L’exception- Exemple
1 ©[Link]
Lancer une exception
● Lorsqu’on veut lancer une exception, on utilise le mot clé throw suivi de l’exception
à lancer, qu’il faut auparavant avoir créée avec new NomException().
● Ainsi lancer une exception de la classe PasDefini s’écrit :
throw new PasDefini();
● Lorsqu’une exception est levée, l’exécution normale du programme s’arrête et on
saute toutes les instructions jusqu’à ce que :
○ l’exception soit rattrapée
○ Ou que l’on sorte du programme.
1 ©[Link]
Rattraper une exception
La construction try catch
● Le rattrapage d’une exception en Java se fait en utilisant la
construction :
try {
... // 1 //Appel code pouvant lancer une exception
} catch (UneException e) {
... // 2 // traitement à réaliser si exception soulevée
}
.. // 3 // Suite du code
● Si une exception est soulevée par dans la partie “try”, elle va être
attrapé dans la partie “catch”.
● Si la classe de l’exception est UneException alors le code 2 est
exécuté puis 3.
1 ©[Link]
Rattraper une exception
1 ©[Link]
Rattraper une exception
2 ©[Link]
Rattraper plusieurs exceptions
● Il est possible de rattraper plusieurs types
d’exceptions en enchaînant les constructions catch
● Pour être en mesure d’utiliser la technique du try-
catch de façon efficace, il faut bien connaître les
types d’exceptions.
● Il est également possible d’imbriquer les
constructions try catch
2 ©[Link]
Exemple:
©[Link]
Rattraper plusieurs exceptions
2 ©[Link]
Rattraper +eurs exceptions-Exemple 2
2 ©[Link]
Exceptions
L’exception
Les exceptions suivantes ne sont pas vérifiées par le compilateur :
Exceptions Signification
ArithmeticException Erreurs arithmétiques, comme la division par zéro.
ArrayIndexOutOfBoundsException L’index d’un tableau est hors limites.
ArrayStoreException Assigner un élément d’un tableau à un type
incompatible.
ClassCastException Appel invalide.
IllegalArgumentException Argument illégal utilisé pour invoquer une méthode.
IllegalMonitorStateException Opération illégale d’un moniteur, comme attendre
après un “Thread unlocked”.
2 ©[Link]
Exceptions
L’exception
Les exceptions suivantes ne sont pas vérifiées par le compilateur :
IllegalThreadStateException L’opération demandée n’est pas compatible avec
l’état du Thread.
IndexOutOfBoundsException Certains types d’index sont hors limites.
NegativeArraySizeException Tableau créé avec une grandeur négative.
NullPointerException Utilisation invalide de la référence null.
NumberFormatException Conversion invalide d’une String vers un format
numérique.
SecurityException Violation de la sécurité.
2 ©[Link]
Exceptions
L’exception
Les exceptions qui suivent sont vérifiées par le compilateur :
Exceptions Signification
ClassNotFoundException La classe est introuvable.
CloneNotSupportedException Tentative de cloner un objet qui n’implémente pas
l’interface Cloneable.
IllegalAccessException Accès à une classe est refusé.
InstantiationException Tentative de créer un objet d’une classe abstraite ou
d’une interface.
InterruptedException Un Thread a été intérrompu par un autre Thread.
2 ©[Link]
Déclaration throws
● Le langage Java, demande à ce que soient déclarées les exceptions et qui peuvent
être lancées dans une méthode sans être rattrapées dans cette même méthode.
● Cette déclaration est de la forme throws Exception1, Exception2, ... et se place entre
les arguments de la méthode et l’accolade ouvrante marquant le début du corps
de la méthode. Cette déclaration n’est pas obligatoire pour les exceptions de la
catégorie Error ni pour celles de la catégorie RuntimeException.
void fonction throws IOException {
// . . .
}
2 ©[Link]
Déclaration throws
2 ©[Link]
Déclaration throws
3 ©[Link]
Lecture à partir du clavier (1ère façon)
● Le programme suivant permet de faire la saisi au clavier
class App2{
public static void main(String args[]) {
byte tampon[] = new byte[40];
/*byte: entiers contenant les nombres entre 0 et 255*/
/* tampon: peut contenir jusqu’à 40 nombres différents*/
[Link](" Entrez valeurs: ");
3 ©[Link]
Lecture à partir du clavier (1ère façon)
try{
[Link](tab); // c’est le code ASCII qui sera
stocké dans tab
}
catch(Exception e)
{[Link]("Erreur : " + [Link]());}
…}}
● La méthode read: lis les caractères tapés par l’utilisateur y
compris les espaces
3 ©[Link]
Lecture à partir du clavier
©[Link]
Lecture à partir du clavier (2ème façon)
● BufferedReader: récupérer des chaînes de caractères saisis sur la console par
l'utilisateur.
Reader reader = new InputStreamReader([Link]);
BufferedReader keyboard = new BufferedReader(reader);
[Link]("Entrez une ligne de texte : ");
String line="";
try{
line = [Link]();
}catch(Exception e)
{
[Link]("Erreur : " + [Link]());
}
[Link]("Vous avez saisi : " + line);
3 ©[Link]
Merci,
©[Link]