SlideShare une entreprise Scribd logo
Chapitre 6
Les exceptions
Mouna Torjmen Khemakhem
Exception
public class testException {
public static void main (String[] args)
{
int i = 3 ;
int j = 0 ;
System.out.println ("resultat = " + (i/j));
}
}
2
}
Exception in thread "main" java.lang.ArithmeticException: / by zero
at testException.main(testException.java:6)
L’exception est une erreur qui se produit, soudainement, lors de l’exécution d’un programme
Deux solutions:
-laisser le programme se terminer avec une erreur,
-essayer, malgré l'exception, de continuer l'exécution normale.
Mouna Torjmen Khemakhem
Exception
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
Mouna Torjmen Khemakhem
Arbre des exceptions
Throwable
Exception
Object
Les erreurs
graves
4
Error
Exception
RunTimeException
Exceptions
Personnalisées
OutOfMemoryError
NullPointerException
ClassCastException
...
IOException
unchecked
unchecked
checked
checked
Mouna Torjmen Khemakhem
• Throwable est la classe de base, à partir de laquelle vont
dériver toutes les exceptions.
• Error: Elle gère les erreurs liées à la machine virtuelle
(LinkageError, ThreadDeath etc.)
• Exception: contient l'ensemble des exceptions gérées par le
Programmeur (ArithmeticException etc.).
• RunTimeException: regroupe les erreurs de base(Arithmetic,
etc.)etc.)
• IOException: regroupe les erreurs entrée/sortie.
• Error et RunTimeException appartiennent à la catégorie
« uncheked » donc "throws" n'est pas nécessaire à coté de la
méthode qui lance une exception de cette catégorie là.
• Toutes les autres excéptions (y compris donc celles créées par
le programmeur) appartiennent à la catégorie des "checked" où
l'utilisation de "throws" est exigée. 5
Mouna Torjmen Khemakhem
Checked Exception
• Se sont les exceptions vérifiées lors du
compilation. Si un code d’une méthoed capte
(throws) une exception “checked”, alors cette
méthode doit soit traiter cette exception soit
spécifier l’exception grâce au mot clé
“throws”.
6
Mouna Torjmen Khemakhem
Checked Exception
import java.io.*;
class Main {
public static void main(String[] args) {
FileReader file = new FileReader("C:testa.txt");
BufferedReader fileInput = new BufferedReader(file);
// Print first 3 lines of file "C:testa.txt"// Print first 3 lines of file "C:testa.txt"
for (int counter = 0; counter < 3; counter++)
System.out.println(fileInput.readLine());
fileInput.close();
}
}
Output:
Exception in thread "main" java.lang.RuntimeException: Uncompilable source code - unreported
exception java.io.FileNotFoundException; must be caught or declared to be thrown at
Main.main(Main.java:5)
Mouna Torjmen Khemakhem
Checked Exception
• Pour résoudre le probleme, soit on spécifie une liste
d’exceptions, soit on utilise le bloc try/catch.
import java.io.*;
class Main {
public static void main(String[] args) throws IOException {
FileReader file = new FileReader("C:testa.txt");
8
FileReader file = new FileReader("C:testa.txt");
BufferedReader fileInput = new BufferedReader(file);
// Print first 3 lines of file "C:testa.txt"
for (int counter = 0; counter < 3; counter++)
System.out.println(fileInput.readLine());
fileInput.close();
}
}
Output: First three lines of file “C:testa.txt”
Mouna Torjmen Khemakhem
Unchecked exception
• Se sont des exceptions qui ne sont pas vérifiés
lors du compilation. En java, les exceptions
sous les classes Error et RuntimeException
sont “unchecked”, tout le reste soussont “unchecked”, tout le reste sous
throwable est “checked”.
Mouna Torjmen Khemakhem
Déclenchement des exceptions
• Une exception peut être déclenchée de deux
façons :
- Suite à une erreur d’exécution dans le programme
JAVA, la JVM génère uneJAVA, la JVM génère une
exception(RunTimeException, Error),
- Le développeur peut, à son tour, déclencher une
exception au sein de son programme (qui étend la
classe Exception).
10
Mouna Torjmen Khemakhem
Gestion de l’exception
Il y a deux façons de réagir au déclenchement
d'une exception pour un programme :
soit l'exception est traitée localement au code
exécuté.
soit l'exception est transmise à la fonction
appelante, qui elle-même peut choisir ce qu'elle
en fait.
11
Mouna Torjmen Khemakhem
Gestion de l’exception (active avec
try/catch)
try { bloc de programme susceptible de provoquer une exception }
catch (TypeException e)
{ bloc de traitement de l'exception }
finally
{Le block finally est un block optionnel
contenant des instructions qui seront toujours exécutées quelque soit le
On peut, par exemple, fermer un fichier
contenant des instructions qui seront toujours exécutées quelque soit le
résultat du try }
le bloc try et les gestionnaires associés doivent être contigus.
try
{ .....
}
.....
.....
catch (ErrConst) // erreur : catch doit être contigu au bloc try
{ ..... } 12
Mouna Torjmen Khemakhem
Gestion de l’exception (gestion active
avec try/catch)
• Le bloc try est exécuté jusqu'à ce qu'il se termine avec
succès ou bien qu'une exception soit levée.
• Les clauses catch sont examinées l'une après l'autre dans
le but d'en trouver une qui traite cette classe d'exceptions.le but d'en trouver une qui traite cette classe d'exceptions.
• Les clauses catch doivent donc traiter les exceptions de la
plus spécifique à la plus générale.
• Si une clause catch convenant à cette exception a été
trouvée et le bloc exécuté, l'exécution du programme
reprend son cours.
13
Mouna Torjmen Khemakhem
Gestion de l’exception (gestion
active avec try/catch)
public class testException{
public static void main (java.lang.String[] args){
int i = 3 ;
int j = 0 ;
try {try {
System.out.println ("résultat = " + (i/j));
}
catch (ArithmeticException e){
System.out.println(“Exception mathématique“);
}
catch (Exception e){
System.out.println(“Exception inconnue“);
}
}
}
14
Mouna Torjmen Khemakhem
int[] tableau = new int[30],i ;
// Initilialisation du tableau avec
// une boucle infinie d’où ArrayIndexOutOfBoundsException
try {
for (i = 0 ; i<max; i ++)
tableau[i] = i ;
}
Gestion de l’exception (gestion
active avec try/catch)
}
catch (ArrayIndexOutOfBoundsException e) {
System.out.println ( “Erreur : dépassement d’indice” ) ;
}
finally {
System.out.println (“Taille du tableau : ” + tableau.length) ;
}
Exécution si max>30:
Erreur : dépassement d’indice
Taille du tableau : 30
Exécution si max=30:
Taille du tableau : 30
15
Mouna Torjmen Khemakhem
Gestion de l’exception (gestion
passive avec throws)
• Afin de déléguer à la méthode appelante une
exception qu'il ne veut pas traiter, le terme
throws est rajouté, par le programmeur, à la
déclaration de la méthode dans laquelledéclaration de la méthode dans laquelle
l'exception est susceptible de se manifester.
public void maMethode() throws IOException
{
// ne traite pas l'exception IOException
// mais est susceptible de la générer
}
16
Mouna Torjmen Khemakhem
Gestion de l’exception
• Si elles ne sont pas immédiatement capturées par un
bloc catch, les exceptions se propagent en remontant la
pile d'appels des méthodes, jusqu'à être traitées.
• Si une exception n'est jamais capturée, elle se propage
jusqu'à la méthode main(), ce qui pousse l'interpréteurjusqu'à la méthode main(), ce qui pousse l'interpréteur
Java à afficher un message d'erreur et à s'arrêter.
• L'interpréteur Java affiche un message identifiant :
– l'exception,
– la méthode qui l'a causée,
– la ligne correspondante dans le fichier.
17
Mouna Torjmen Khemakhem
Exception personnalisée
• Le programmeur peut lever ses propres
exceptions à l'aide du mot réservé throw.
• throw prend en paramètre un objet instance de
Throwable ou d'une de ses sous-classes.
• Le mot-clé throw fait partie des mots-clés
réservés du langage Java, et il permet de forcer la
génération d'une exception, représentée par l'objet
qu'on lui passe en paramètre.
throw new MonException ("Exception personnalisée !!!");
18
Mouna Torjmen Khemakhem
Exception personnalisée
• Créer une classe héritant de la classe Exception:
class MonException extends Exception { }
• renvoyer l'exception levée à la classe appelante:
class Personneclass Personne
{
public Personne(int num, int age) throws MonException //méthode susceptible de
déclencher l’erreur
{
if ( (num<0) || (age<0)) throw new MonException() ; // lance une exception
//de type MonException
this.num = num ;
this.age = age ;
}
}
19
Mouna Torjmen Khemakhem
Personnalisation du message d’erreur
20
Mouna Torjmen Khemakhem
Création d’un message d’erreur
personnalisé
21
Mouna Torjmen Khemakhem
Exécution
22
Mouna Torjmen Khemakhem
La classe Throwable
• Sous classe de la classe Objet.
• Les méthodes de la classe Throwable:
– String getMessage(): lecture du message
– void printStackTrace(): affiche l’exception– void printStackTrace(): affiche l’exception
23
Mouna Torjmen Khemakhem
La classe Throwable
public class testException{
public static void main (java.lang.String[] args){
int i = 3 ;
int j = 0 ;
try { System.out.println ("résultat = " + (i/j)); }
catch (ArithmeticException e){
System.out.println ("getmessage ");
System.out.println (e.getMessage());
System.out.println (" ");
System.out.println ("toString ");
24
System.out.println ("toString ");
System.out.println (e.toString());
System.out.println (" ");
System.out.println ("printStackTrace");
e.printStackTrace() ;
}
}
}
getmessage
/ by zero
toString
java.lang.ArithmeticException: / by zero
printStackTrace
java.lang.ArithmeticException: / by zero
at testException.main(testException.java:5)Mouna Torjmen Khemakhem

Contenu connexe

Tendances

Corrige tp java
Corrige tp javaCorrige tp java
Corrige tp java
Maya Medjdoub
 
POO Java Chapitre 3 Collections
POO Java Chapitre 3 CollectionsPOO Java Chapitre 3 Collections
POO Java Chapitre 3 Collections
Mouna Torjmen
 
Tp java ee.pptx
Tp java ee.pptxTp java ee.pptx
Tp java ee.pptx
Eric Bourdet
 
Exercice 1 java Héritage
Exercice 1 java HéritageExercice 1 java Héritage
Exercice 1 java Héritage
NadaBenLatifa
 
Cours JavaScript
Cours JavaScriptCours JavaScript
Cours JavaScript
Olivier Le Goaër
 
Correction de td poo n2
Correction de td poo n2Correction de td poo n2
Correction de td poo n2yassine kchiri
 
JDBC: Gestion des bases de données en Java
JDBC: Gestion des bases de données en Java JDBC: Gestion des bases de données en Java
JDBC: Gestion des bases de données en Java
Youness Boukouchi
 
Chapitre 2 complexité
Chapitre 2 complexitéChapitre 2 complexité
Chapitre 2 complexité
Sana Aroussi
 
Fondamentaux java
Fondamentaux javaFondamentaux java
Fondamentaux java
Ines Ouaz
 
Support du cours : Systèmes d'exploitation 2 (linux)
Support du cours : Systèmes d'exploitation 2 (linux)Support du cours : Systèmes d'exploitation 2 (linux)
Support du cours : Systèmes d'exploitation 2 (linux)
Faycel Chaoua
 
Chap 6 : classes et interfaces
Chap 6 : classes et interfacesChap 6 : classes et interfaces
Chap 6 : classes et interfaces
Aziz Darouichi
 
Héritage et polymorphisme- Jihen HEDHLI
Héritage et polymorphisme- Jihen HEDHLIHéritage et polymorphisme- Jihen HEDHLI
Héritage et polymorphisme- Jihen HEDHLI
JihenHedhli1
 
Chapitre 4 heritage et polymorphisme
Chapitre 4 heritage et polymorphismeChapitre 4 heritage et polymorphisme
Chapitre 4 heritage et polymorphisme
Amir Souissi
 
Support POO Java Deuxième Partie
Support POO Java Deuxième PartieSupport POO Java Deuxième Partie
Support POO Java Deuxième Partie
ENSET, Université Hassan II Casablanca
 
Examen principal- php - correction
Examen principal- php - correctionExamen principal- php - correction
Examen principal- php - correction
Ines Ouaz
 
Cours design pattern m youssfi partie 3 decorateur
Cours design pattern m youssfi partie 3 decorateurCours design pattern m youssfi partie 3 decorateur
Cours design pattern m youssfi partie 3 decorateur
ENSET, Université Hassan II Casablanca
 
Chapitre5: Classes et objets
Chapitre5: Classes et objetsChapitre5: Classes et objets
Chapitre5: Classes et objets
Aziz Darouichi
 
Site JEE de ECommerce Basé sur Spring IOC MVC Security JPA Hibernate
Site JEE de ECommerce  Basé sur Spring IOC MVC Security JPA HibernateSite JEE de ECommerce  Basé sur Spring IOC MVC Security JPA Hibernate
Site JEE de ECommerce Basé sur Spring IOC MVC Security JPA Hibernate
ENSET, Université Hassan II Casablanca
 
Mise en oeuvre des Frameworks de Machines et Deep Learning pour les Applicati...
Mise en oeuvre des Frameworks de Machines et Deep Learning pour les Applicati...Mise en oeuvre des Frameworks de Machines et Deep Learning pour les Applicati...
Mise en oeuvre des Frameworks de Machines et Deep Learning pour les Applicati...
ENSET, Université Hassan II Casablanca
 

Tendances (20)

Corrige tp java
Corrige tp javaCorrige tp java
Corrige tp java
 
POO Java Chapitre 3 Collections
POO Java Chapitre 3 CollectionsPOO Java Chapitre 3 Collections
POO Java Chapitre 3 Collections
 
Tp java ee.pptx
Tp java ee.pptxTp java ee.pptx
Tp java ee.pptx
 
Exercice 1 java Héritage
Exercice 1 java HéritageExercice 1 java Héritage
Exercice 1 java Héritage
 
Cours JavaScript
Cours JavaScriptCours JavaScript
Cours JavaScript
 
Correction de td poo n2
Correction de td poo n2Correction de td poo n2
Correction de td poo n2
 
JDBC: Gestion des bases de données en Java
JDBC: Gestion des bases de données en Java JDBC: Gestion des bases de données en Java
JDBC: Gestion des bases de données en Java
 
Chapitre 2 complexité
Chapitre 2 complexitéChapitre 2 complexité
Chapitre 2 complexité
 
Fondamentaux java
Fondamentaux javaFondamentaux java
Fondamentaux java
 
Support du cours : Systèmes d'exploitation 2 (linux)
Support du cours : Systèmes d'exploitation 2 (linux)Support du cours : Systèmes d'exploitation 2 (linux)
Support du cours : Systèmes d'exploitation 2 (linux)
 
Chap 6 : classes et interfaces
Chap 6 : classes et interfacesChap 6 : classes et interfaces
Chap 6 : classes et interfaces
 
Héritage et polymorphisme- Jihen HEDHLI
Héritage et polymorphisme- Jihen HEDHLIHéritage et polymorphisme- Jihen HEDHLI
Héritage et polymorphisme- Jihen HEDHLI
 
Chapitre 4 heritage et polymorphisme
Chapitre 4 heritage et polymorphismeChapitre 4 heritage et polymorphisme
Chapitre 4 heritage et polymorphisme
 
Support POO Java Deuxième Partie
Support POO Java Deuxième PartieSupport POO Java Deuxième Partie
Support POO Java Deuxième Partie
 
Examen principal- php - correction
Examen principal- php - correctionExamen principal- php - correction
Examen principal- php - correction
 
Cours design pattern m youssfi partie 3 decorateur
Cours design pattern m youssfi partie 3 decorateurCours design pattern m youssfi partie 3 decorateur
Cours design pattern m youssfi partie 3 decorateur
 
Chapitre5: Classes et objets
Chapitre5: Classes et objetsChapitre5: Classes et objets
Chapitre5: Classes et objets
 
Site JEE de ECommerce Basé sur Spring IOC MVC Security JPA Hibernate
Site JEE de ECommerce  Basé sur Spring IOC MVC Security JPA HibernateSite JEE de ECommerce  Basé sur Spring IOC MVC Security JPA Hibernate
Site JEE de ECommerce Basé sur Spring IOC MVC Security JPA Hibernate
 
Cours java
Cours javaCours java
Cours java
 
Mise en oeuvre des Frameworks de Machines et Deep Learning pour les Applicati...
Mise en oeuvre des Frameworks de Machines et Deep Learning pour les Applicati...Mise en oeuvre des Frameworks de Machines et Deep Learning pour les Applicati...
Mise en oeuvre des Frameworks de Machines et Deep Learning pour les Applicati...
 

Similaire à POO Java Chapitre 6 Exceptions

Exceptions
ExceptionsExceptions
Exceptions
Axel KAMALAK
 
Java-3eme partie.pptx
Java-3eme partie.pptxJava-3eme partie.pptx
Java-3eme partie.pptx
HassanAbdel
 
Cours de C++, en français, 2002 - Cours 2.4
Cours de C++, en français, 2002 - Cours 2.4Cours de C++, en français, 2002 - Cours 2.4
Cours de C++, en français, 2002 - Cours 2.4
Laurent BUNIET
 
POO-JAVA-partie3.pdf
POO-JAVA-partie3.pdfPOO-JAVA-partie3.pdf
POO-JAVA-partie3.pdf
YasushiTsubakik
 
Concurrence-Interruption-Exceptions.pdf
Concurrence-Interruption-Exceptions.pdfConcurrence-Interruption-Exceptions.pdf
Concurrence-Interruption-Exceptions.pdf
Patiento Del Mar
 
Comment écrire du code testable ?
Comment écrire du code testable ?Comment écrire du code testable ?
Comment écrire du code testable ?
Fou Cha
 
22-reflection.pdf
22-reflection.pdf22-reflection.pdf
22-reflection.pdf
Patiento Del Mar
 
Atoum, le framework de tests unitaires pour PHP 5.3 simple, moderne et intuit...
Atoum, le framework de tests unitaires pour PHP 5.3 simple, moderne et intuit...Atoum, le framework de tests unitaires pour PHP 5.3 simple, moderne et intuit...
Atoum, le framework de tests unitaires pour PHP 5.3 simple, moderne et intuit...
fdussert
 
threads.pdf
threads.pdfthreads.pdf
threads.pdf
Patiento Del Mar
 
ExJava.pdf
ExJava.pdfExJava.pdf
ExJava.pdf
OumaimaHm
 
Design Pattern introduction
Design Pattern introductionDesign Pattern introduction
Design Pattern introduction
neuros
 
Eric Moreau: AOP in .Net sing PostSharp
Eric Moreau: AOP in .Net sing PostSharpEric Moreau: AOP in .Net sing PostSharp
Eric Moreau: AOP in .Net sing PostSharp
MSDEVMTL
 
POO - Chapitre6.pptx
POO - Chapitre6.pptxPOO - Chapitre6.pptx
POO - Chapitre6.pptx
RAYENBOUAFIF1
 
Intro sur les tests unitaires
Intro sur les tests unitairesIntro sur les tests unitaires
Intro sur les tests unitairesPHPPRO
 
C++ Metaprogramming : multidimensional typelist
C++ Metaprogramming : multidimensional typelistC++ Metaprogramming : multidimensional typelist
C++ Metaprogramming : multidimensional typelist
Vincent Agnus
 
Memo java
Memo javaMemo java
Memo java
Ghazouani Mahdi
 
Tester unitairement une application java
Tester unitairement une application javaTester unitairement une application java
Tester unitairement une application java
Antoine Rey
 

Similaire à POO Java Chapitre 6 Exceptions (20)

Ch11
Ch11Ch11
Ch11
 
Exceptions
ExceptionsExceptions
Exceptions
 
Java-3eme partie.pptx
Java-3eme partie.pptxJava-3eme partie.pptx
Java-3eme partie.pptx
 
Cours de C++, en français, 2002 - Cours 2.4
Cours de C++, en français, 2002 - Cours 2.4Cours de C++, en français, 2002 - Cours 2.4
Cours de C++, en français, 2002 - Cours 2.4
 
POO-JAVA-partie3.pdf
POO-JAVA-partie3.pdfPOO-JAVA-partie3.pdf
POO-JAVA-partie3.pdf
 
Concurrence-Interruption-Exceptions.pdf
Concurrence-Interruption-Exceptions.pdfConcurrence-Interruption-Exceptions.pdf
Concurrence-Interruption-Exceptions.pdf
 
Comment écrire du code testable ?
Comment écrire du code testable ?Comment écrire du code testable ?
Comment écrire du code testable ?
 
22-reflection.pdf
22-reflection.pdf22-reflection.pdf
22-reflection.pdf
 
Atoum, le framework de tests unitaires pour PHP 5.3 simple, moderne et intuit...
Atoum, le framework de tests unitaires pour PHP 5.3 simple, moderne et intuit...Atoum, le framework de tests unitaires pour PHP 5.3 simple, moderne et intuit...
Atoum, le framework de tests unitaires pour PHP 5.3 simple, moderne et intuit...
 
threads.pdf
threads.pdfthreads.pdf
threads.pdf
 
Python chapitre 5.pdf
Python chapitre 5.pdfPython chapitre 5.pdf
Python chapitre 5.pdf
 
Threads
ThreadsThreads
Threads
 
ExJava.pdf
ExJava.pdfExJava.pdf
ExJava.pdf
 
Design Pattern introduction
Design Pattern introductionDesign Pattern introduction
Design Pattern introduction
 
Eric Moreau: AOP in .Net sing PostSharp
Eric Moreau: AOP in .Net sing PostSharpEric Moreau: AOP in .Net sing PostSharp
Eric Moreau: AOP in .Net sing PostSharp
 
POO - Chapitre6.pptx
POO - Chapitre6.pptxPOO - Chapitre6.pptx
POO - Chapitre6.pptx
 
Intro sur les tests unitaires
Intro sur les tests unitairesIntro sur les tests unitaires
Intro sur les tests unitaires
 
C++ Metaprogramming : multidimensional typelist
C++ Metaprogramming : multidimensional typelistC++ Metaprogramming : multidimensional typelist
C++ Metaprogramming : multidimensional typelist
 
Memo java
Memo javaMemo java
Memo java
 
Tester unitairement une application java
Tester unitairement une application javaTester unitairement une application java
Tester unitairement une application java
 

Plus de Mouna Torjmen

TIC & E-Learning
TIC & E-LearningTIC & E-Learning
TIC & E-Learning
Mouna Torjmen
 
Apprentissage Par Projet APP
Apprentissage Par Projet APPApprentissage Par Projet APP
Apprentissage Par Projet APP
Mouna Torjmen
 
Chapitre 4 no sql
Chapitre 4 no sqlChapitre 4 no sql
Chapitre 4 no sql
Mouna Torjmen
 
Chapitre 3 spark
Chapitre 3 sparkChapitre 3 spark
Chapitre 3 spark
Mouna Torjmen
 
Chapitre 2 hadoop
Chapitre 2 hadoopChapitre 2 hadoop
Chapitre 2 hadoop
Mouna Torjmen
 
Chapitre1 introduction
Chapitre1 introductionChapitre1 introduction
Chapitre1 introduction
Mouna Torjmen
 

Plus de Mouna Torjmen (6)

TIC & E-Learning
TIC & E-LearningTIC & E-Learning
TIC & E-Learning
 
Apprentissage Par Projet APP
Apprentissage Par Projet APPApprentissage Par Projet APP
Apprentissage Par Projet APP
 
Chapitre 4 no sql
Chapitre 4 no sqlChapitre 4 no sql
Chapitre 4 no sql
 
Chapitre 3 spark
Chapitre 3 sparkChapitre 3 spark
Chapitre 3 spark
 
Chapitre 2 hadoop
Chapitre 2 hadoopChapitre 2 hadoop
Chapitre 2 hadoop
 
Chapitre1 introduction
Chapitre1 introductionChapitre1 introduction
Chapitre1 introduction
 

POO Java Chapitre 6 Exceptions

  • 2. Exception public class testException { public static void main (String[] args) { int i = 3 ; int j = 0 ; System.out.println ("resultat = " + (i/j)); } } 2 } Exception in thread "main" java.lang.ArithmeticException: / by zero at testException.main(testException.java:6) L’exception est une erreur qui se produit, soudainement, lors de l’exécution d’un programme Deux solutions: -laisser le programme se terminer avec une erreur, -essayer, malgré l'exception, de continuer l'exécution normale. Mouna Torjmen Khemakhem
  • 3. Exception 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 Mouna Torjmen Khemakhem
  • 4. Arbre des exceptions Throwable Exception Object Les erreurs graves 4 Error Exception RunTimeException Exceptions Personnalisées OutOfMemoryError NullPointerException ClassCastException ... IOException unchecked unchecked checked checked Mouna Torjmen Khemakhem
  • 5. • Throwable est la classe de base, à partir de laquelle vont dériver toutes les exceptions. • Error: Elle gère les erreurs liées à la machine virtuelle (LinkageError, ThreadDeath etc.) • Exception: contient l'ensemble des exceptions gérées par le Programmeur (ArithmeticException etc.). • RunTimeException: regroupe les erreurs de base(Arithmetic, etc.)etc.) • IOException: regroupe les erreurs entrée/sortie. • Error et RunTimeException appartiennent à la catégorie « uncheked » donc "throws" n'est pas nécessaire à coté de la méthode qui lance une exception de cette catégorie là. • Toutes les autres excéptions (y compris donc celles créées par le programmeur) appartiennent à la catégorie des "checked" où l'utilisation de "throws" est exigée. 5 Mouna Torjmen Khemakhem
  • 6. Checked Exception • Se sont les exceptions vérifiées lors du compilation. Si un code d’une méthoed capte (throws) une exception “checked”, alors cette méthode doit soit traiter cette exception soit spécifier l’exception grâce au mot clé “throws”. 6 Mouna Torjmen Khemakhem
  • 7. Checked Exception import java.io.*; class Main { public static void main(String[] args) { FileReader file = new FileReader("C:testa.txt"); BufferedReader fileInput = new BufferedReader(file); // Print first 3 lines of file "C:testa.txt"// Print first 3 lines of file "C:testa.txt" for (int counter = 0; counter < 3; counter++) System.out.println(fileInput.readLine()); fileInput.close(); } } Output: Exception in thread "main" java.lang.RuntimeException: Uncompilable source code - unreported exception java.io.FileNotFoundException; must be caught or declared to be thrown at Main.main(Main.java:5) Mouna Torjmen Khemakhem
  • 8. Checked Exception • Pour résoudre le probleme, soit on spécifie une liste d’exceptions, soit on utilise le bloc try/catch. import java.io.*; class Main { public static void main(String[] args) throws IOException { FileReader file = new FileReader("C:testa.txt"); 8 FileReader file = new FileReader("C:testa.txt"); BufferedReader fileInput = new BufferedReader(file); // Print first 3 lines of file "C:testa.txt" for (int counter = 0; counter < 3; counter++) System.out.println(fileInput.readLine()); fileInput.close(); } } Output: First three lines of file “C:testa.txt” Mouna Torjmen Khemakhem
  • 9. Unchecked exception • Se sont des exceptions qui ne sont pas vérifiés lors du compilation. En java, les exceptions sous les classes Error et RuntimeException sont “unchecked”, tout le reste soussont “unchecked”, tout le reste sous throwable est “checked”. Mouna Torjmen Khemakhem
  • 10. Déclenchement des exceptions • Une exception peut être déclenchée de deux façons : - Suite à une erreur d’exécution dans le programme JAVA, la JVM génère uneJAVA, la JVM génère une exception(RunTimeException, Error), - Le développeur peut, à son tour, déclencher une exception au sein de son programme (qui étend la classe Exception). 10 Mouna Torjmen Khemakhem
  • 11. Gestion de l’exception Il y a deux façons de réagir au déclenchement d'une exception pour un programme : soit l'exception est traitée localement au code exécuté. soit l'exception est transmise à la fonction appelante, qui elle-même peut choisir ce qu'elle en fait. 11 Mouna Torjmen Khemakhem
  • 12. Gestion de l’exception (active avec try/catch) try { bloc de programme susceptible de provoquer une exception } catch (TypeException e) { bloc de traitement de l'exception } finally {Le block finally est un block optionnel contenant des instructions qui seront toujours exécutées quelque soit le On peut, par exemple, fermer un fichier contenant des instructions qui seront toujours exécutées quelque soit le résultat du try } le bloc try et les gestionnaires associés doivent être contigus. try { ..... } ..... ..... catch (ErrConst) // erreur : catch doit être contigu au bloc try { ..... } 12 Mouna Torjmen Khemakhem
  • 13. Gestion de l’exception (gestion active avec try/catch) • Le bloc try est exécuté jusqu'à ce qu'il se termine avec succès ou bien qu'une exception soit levée. • Les clauses catch sont examinées l'une après l'autre dans le but d'en trouver une qui traite cette classe d'exceptions.le but d'en trouver une qui traite cette classe d'exceptions. • Les clauses catch doivent donc traiter les exceptions de la plus spécifique à la plus générale. • Si une clause catch convenant à cette exception a été trouvée et le bloc exécuté, l'exécution du programme reprend son cours. 13 Mouna Torjmen Khemakhem
  • 14. Gestion de l’exception (gestion active avec try/catch) public class testException{ public static void main (java.lang.String[] args){ int i = 3 ; int j = 0 ; try {try { System.out.println ("résultat = " + (i/j)); } catch (ArithmeticException e){ System.out.println(“Exception mathématique“); } catch (Exception e){ System.out.println(“Exception inconnue“); } } } 14 Mouna Torjmen Khemakhem
  • 15. int[] tableau = new int[30],i ; // Initilialisation du tableau avec // une boucle infinie d’où ArrayIndexOutOfBoundsException try { for (i = 0 ; i<max; i ++) tableau[i] = i ; } Gestion de l’exception (gestion active avec try/catch) } catch (ArrayIndexOutOfBoundsException e) { System.out.println ( “Erreur : dépassement d’indice” ) ; } finally { System.out.println (“Taille du tableau : ” + tableau.length) ; } Exécution si max>30: Erreur : dépassement d’indice Taille du tableau : 30 Exécution si max=30: Taille du tableau : 30 15 Mouna Torjmen Khemakhem
  • 16. Gestion de l’exception (gestion passive avec throws) • Afin de déléguer à la méthode appelante une exception qu'il ne veut pas traiter, le terme throws est rajouté, par le programmeur, à la déclaration de la méthode dans laquelledéclaration de la méthode dans laquelle l'exception est susceptible de se manifester. public void maMethode() throws IOException { // ne traite pas l'exception IOException // mais est susceptible de la générer } 16 Mouna Torjmen Khemakhem
  • 17. Gestion de l’exception • Si elles ne sont pas immédiatement capturées par un bloc catch, les exceptions se propagent en remontant la pile d'appels des méthodes, jusqu'à être traitées. • Si une exception n'est jamais capturée, elle se propage jusqu'à la méthode main(), ce qui pousse l'interpréteurjusqu'à la méthode main(), ce qui pousse l'interpréteur Java à afficher un message d'erreur et à s'arrêter. • L'interpréteur Java affiche un message identifiant : – l'exception, – la méthode qui l'a causée, – la ligne correspondante dans le fichier. 17 Mouna Torjmen Khemakhem
  • 18. Exception personnalisée • Le programmeur peut lever ses propres exceptions à l'aide du mot réservé throw. • throw prend en paramètre un objet instance de Throwable ou d'une de ses sous-classes. • Le mot-clé throw fait partie des mots-clés réservés du langage Java, et il permet de forcer la génération d'une exception, représentée par l'objet qu'on lui passe en paramètre. throw new MonException ("Exception personnalisée !!!"); 18 Mouna Torjmen Khemakhem
  • 19. Exception personnalisée • Créer une classe héritant de la classe Exception: class MonException extends Exception { } • renvoyer l'exception levée à la classe appelante: class Personneclass Personne { public Personne(int num, int age) throws MonException //méthode susceptible de déclencher l’erreur { if ( (num<0) || (age<0)) throw new MonException() ; // lance une exception //de type MonException this.num = num ; this.age = age ; } } 19 Mouna Torjmen Khemakhem
  • 20. Personnalisation du message d’erreur 20 Mouna Torjmen Khemakhem
  • 21. Création d’un message d’erreur personnalisé 21 Mouna Torjmen Khemakhem
  • 23. La classe Throwable • Sous classe de la classe Objet. • Les méthodes de la classe Throwable: – String getMessage(): lecture du message – void printStackTrace(): affiche l’exception– void printStackTrace(): affiche l’exception 23 Mouna Torjmen Khemakhem
  • 24. La classe Throwable public class testException{ public static void main (java.lang.String[] args){ int i = 3 ; int j = 0 ; try { System.out.println ("résultat = " + (i/j)); } catch (ArithmeticException e){ System.out.println ("getmessage "); System.out.println (e.getMessage()); System.out.println (" "); System.out.println ("toString "); 24 System.out.println ("toString "); System.out.println (e.toString()); System.out.println (" "); System.out.println ("printStackTrace"); e.printStackTrace() ; } } } getmessage / by zero toString java.lang.ArithmeticException: / by zero printStackTrace java.lang.ArithmeticException: / by zero at testException.main(testException.java:5)Mouna Torjmen Khemakhem