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

PDF
POO Java Chapitre 4 Heritage et Polymorphisme
PPTX
La gestion des exceptions avec Java
PDF
POO Java Introduction
PPSX
Fondamentaux java
PDF
Chapitre 5 classes abstraites et interfaces
PDF
Exercice 2 java Héritage
PDF
POO Java Chapitre 2 Encapsulation
PDF
Corrige tp java
POO Java Chapitre 4 Heritage et Polymorphisme
La gestion des exceptions avec Java
POO Java Introduction
Fondamentaux java
Chapitre 5 classes abstraites et interfaces
Exercice 2 java Héritage
POO Java Chapitre 2 Encapsulation
Corrige tp java

Tendances (20)

PDF
POO Java Chapitre 3 Collections
PDF
Chapitre 6 traitement des exceptions
PDF
POO Java Chapitre 1 Classe & Objet
PDF
Chap 6 : classes et interfaces
PDF
Polymorphisme, interface et classe abstraite
PDF
Tp n 5 linux
PDF
Support de cours technologie et application m.youssfi
PDF
Correction Examen 2016-2017 POO .pdf
PDF
Algorithmique et Structures de Données II
PDF
Rapport sfe hamza_ghaissi_storactive
PPTX
Les collections en Java
PPSX
diagramme de séquence UML
PDF
Site JEE de ECommerce Basé sur Spring IOC MVC Security JPA Hibernate
PPTX
Le langage html
PDF
Support de cours Spring M.youssfi
PDF
Support POO Java première partie
PDF
Support Java Avancé Troisième Partie
PDF
HTML, CSS et Javascript
PDF
Cours uml
PDF
Cours design pattern m youssfi partie 7 facade bridge flyweight
POO Java Chapitre 3 Collections
Chapitre 6 traitement des exceptions
POO Java Chapitre 1 Classe & Objet
Chap 6 : classes et interfaces
Polymorphisme, interface et classe abstraite
Tp n 5 linux
Support de cours technologie et application m.youssfi
Correction Examen 2016-2017 POO .pdf
Algorithmique et Structures de Données II
Rapport sfe hamza_ghaissi_storactive
Les collections en Java
diagramme de séquence UML
Site JEE de ECommerce Basé sur Spring IOC MVC Security JPA Hibernate
Le langage html
Support de cours Spring M.youssfi
Support POO Java première partie
Support Java Avancé Troisième Partie
HTML, CSS et Javascript
Cours uml
Cours design pattern m youssfi partie 7 facade bridge flyweight
Publicité

Plus de Mouna Torjmen (6)

PDF
TIC & E-Learning
PDF
Apprentissage Par Projet APP
PDF
Chapitre 4 no sql
PDF
Chapitre 3 spark
PDF
Chapitre 2 hadoop
PDF
Chapitre1 introduction
TIC & E-Learning
Apprentissage Par Projet APP
Chapitre 4 no sql
Chapitre 3 spark
Chapitre 2 hadoop
Chapitre1 introduction
Publicité

Dernier (16)

PPTX
Logique séquentielle : les fondamentaux
PPTX
Introduction aux Systèmes temps réel.pptx
PDF
CHAPITRE 3 Typologie des réseaux [Enregistrement automatique] 4.pdf
PDF
Visite de chantier – Projet de Polyclinique à Laghouat
PPTX
CH1-RMELLOULI-Données des problèmes d'ordonnancement de la production.pptx
PDF
Arouna Toure - Senior Ingénieur Logiciel Et Chef De Produit
PDF
TP L’analyse granulométrique par tamisage
PPTX
COURS DE PROSPECTION MINIERE UTMSIRI - Copie.pptx
PPTX
UMAPON Cours de traitement des minerais 2.pptx
PDF
TP de La Masse Volumique apparente et absolue
PDF
Expansion du Réseau de Gazoducs de Gaz Naturel au Brésil _ Analyse Technique ...
PDF
FAQ_FORAGE_EAU_SUNRISE_ENGINEERING_GROUP_SARL2025.pdf
PPTX
A Recurrent Neural Network (RNN)s a type of artificial neural network
PPTX
mon_expose_de_geophysique_disposotif_de_wener.pptx
PPTX
FormationFormation e pFormationour HC .pptx
PPTX
Lirrigation-et-le-drainage-en-agriculture-Principes-et-Pratiques.pptx
Logique séquentielle : les fondamentaux
Introduction aux Systèmes temps réel.pptx
CHAPITRE 3 Typologie des réseaux [Enregistrement automatique] 4.pdf
Visite de chantier – Projet de Polyclinique à Laghouat
CH1-RMELLOULI-Données des problèmes d'ordonnancement de la production.pptx
Arouna Toure - Senior Ingénieur Logiciel Et Chef De Produit
TP L’analyse granulométrique par tamisage
COURS DE PROSPECTION MINIERE UTMSIRI - Copie.pptx
UMAPON Cours de traitement des minerais 2.pptx
TP de La Masse Volumique apparente et absolue
Expansion du Réseau de Gazoducs de Gaz Naturel au Brésil _ Analyse Technique ...
FAQ_FORAGE_EAU_SUNRISE_ENGINEERING_GROUP_SARL2025.pdf
A Recurrent Neural Network (RNN)s a type of artificial neural network
mon_expose_de_geophysique_disposotif_de_wener.pptx
FormationFormation e pFormationour HC .pptx
Lirrigation-et-le-drainage-en-agriculture-Principes-et-Pratiques.pptx

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