Vous êtes sur la page 1sur 9

03/01/2014

Institut Supérieur des Etudes Technologiques


De Sfax

Notes de cours
Programmation Orientée Objet (POO)

Chapitre 6 : Les exceptions

Enseignantes: Megdich Imèn & Moalla Hounaïda

Le mécanisme des exceptions

Qu'est-ce qu'une exception?


Comment définir et signaler des exceptions?
Comment récupérer des exceptions?

1
03/01/2014

Qu'est-ce qu'une exception?


Un objet qui représente une erreur à l'exécution
due à
une faute de saisie Causes externes

• un problème matériel } au programme

• une faute de programmation

T[i] avec i = T.length


ArrayIndexOutOfBoundsException

o.f() avec o = null


NullPointerException 3

Hiérarchie des exceptions en Java


Object

Classe mère des


Throwable exceptions

• Attributs :
message d'erreur
état de la pile des appels
• Méthodes :
public Throwable()
public Throwable(String message)
public String getMessage()
public void printStackTrace()
4

2
03/01/2014

Object

Throwable

Ne pas Error Exception


capturer!

VirtualMachineError ClassNotFoundError

OutOfMemoryError UnknownError

Error = problème de la machine virtuelle :


• Erreurs internes
• manque de ressources 5

Exception causes externes


et exceptions
Erreurs de programmation utilisateurs
IOException
RunTimeException

Arithmetic NegativeArraySizeException
Exception
(ex: div par 0) ArrayIndexOutOfBoundsException

NumberFormatExceptio
n
(ex: String -> int)
6

3
03/01/2014

Gestion des exceptions


Exemple introductif
public class TestDivZero {
public static void main(String[] args) {
int numerateur,denominateur;
numerateur = 7;
denominateur = 1;
denominateur--;
System.out.println("Debut");
System.out.println("Quotient=" +
numerateur / denominateur);
System.out.println("Fin"); // ne sera pas atteint
}
}
Trace d'exécution :
Debut
Exception in thread "main" java.lang.ArithmeticException: / by zero
at TestDivZero.main( TestDivZero.java:7 )
NullPointerException est une exception levée par JAVA
quand un programme utilise une référence égale à null (non
initialisée). 7

Gestion des exceptions


Quand une exception risque d’être levée pendant l’exécution
d’un bloc et qu’on souhaite traiter cette exception on place le
bloc dans un gestionnaire d’exceptions try/catch :

try {
Bloc pouvant contenir des
instruction;
exceptions
...
} catch (ClasseThrowable1 var1) {
instruction;
... Blocs contenant les traitements
} catch (ClasseThrowable2 var2) { associés aux différents types
instruction; d’exceptions
...
}
...
} finally {
Bloc final
instruction;
(facultatif)
...
8
}

4
03/01/2014

Gestion des exceptions


Si une exception est levée pendant l’exécution du bloc try alors
les instructions restantes du bloc ne sont pas exécutées.
L’exception est interceptée si sa classe réelle est un sous-type
d’une des classes indiquées (Classe Throwable1,
ClasseThrowable2...).
Quand on indique une classe d’exception on intercepte toutes
les classes qui en dérivent.
Le cas le plus général consiste donc à intercepter les objets de
la classe Throwable. A éviter : il vaut mieux récupérer
exception par exception pour être sûr de la nature du
problème et pouvoir le traiter.
Les instructions du catch sélectionné sont exécutées
immédiatement puis le programme poursuit son exécution
après le gestionnaire try/catch.

Gestion des exceptions


public class TestDivZero {
public static void main(String [ ] args) {
int numerateur, denominateur;
numerateur = 7;
denominateur = 1;
denominateur--;
try {
System.out.println("Avant erreur");
System.out.println("Quotient = " + numerateur/denominateur);
System.out.println("Suite erreur"); // ne sera pas atteint
} catch (NullPointerException e1) {
System.out.println("erreur version 1");
} catch (ArithmeticException e2) {
System.out.println("erreur version 2");
}
System.out.println("Fin");
}
}

Affichage :
Avant erreur
erreur version 2
10
Fin

5
03/01/2014

Propagation des exceptions:throws

Exception : lancer ou déclancher

6
03/01/2014

Exception : capturer ou attraper

Exception : capturer ou attraper

7
03/01/2014

Exception : finally

Exception : finally

8
03/01/2014

Propagation des exceptions:Exemple 2


Deuxième exemple: public class Personne{
public class Test{ private String nom;
public static void main(String[] private String prenom;
args){ private int age;
int age=-1; public Personne(String non,String prenom, int
try { age) throws ErrorAge {
Personne p=new this.nom=nom;
Personne(“Salem“,“Salah“,age); this.prenom=prenom;
} if (age<=0)
catch (ErrorAge e) { throw new ErrorAge(“l’age doit être >0 “);
System.out.println(e.getMessage()); else
} this.age=age; } }
finally { ---------------------------------------------------------
System.out.println(“fin du public class ErreurAge extends Exception{
programme“); public ErrorAge(String message){
}}} super(message); } }

Conclusion
Grâce aux exceptions, Java possède un
mécanisme sophistiqué de gestion des erreurs
permettant d ’écrire du code « robuste »
Le programme peut déclencher des exceptions
au moment opportun.
Le programme peut capturer et traiter les
exceptions grâce au bloc d’instruction catch …
try … finally
Le programmeur peut définir ses propres classes
d ’exceptions

Vous aimerez peut-être aussi