0% ont trouvé ce document utile (0 vote)
73 vues27 pages

Guide sur les exceptions en Java JDK

Le document décrit les exceptions en Java, y compris les différents types d'exceptions, le mécanisme des exceptions avec try/catch, et comment déclencher et gérer les exceptions.

Transféré par

Mohammed Tesjale
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
73 vues27 pages

Guide sur les exceptions en Java JDK

Le document décrit les exceptions en Java, y compris les différents types d'exceptions, le mécanisme des exceptions avec try/catch, et comment déclencher et gérer les exceptions.

Transféré par

Mohammed Tesjale
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd

Exceptions

Les exceptions standard de JDK

Programmations Orientées Objet - JAVA


Chap 5 : les exceptions

Pr. Laila AMIR

Licence SIR
(Systèmes informatiques Répartis)

Année universitaire 2022/2023

Laila AMIR Programmations Orientées Objet 1 / 27


Exceptions
Les exceptions standard de JDK

Plan

1 Exceptions
Introdution
Exceptions
Les types d’exceptions
Mecanisme des exceptions
Déclencher et traı̂ter une exception
Transmission d’information au gestionnaire d’exception
Gestion de plusieurs exceptions
2 Les exceptions standard de JDK
Les exceptions standard
Classification des exceptions standard

Laila AMIR Programmations Orientées Objet 2 / 27


Exceptions
Les types d’exceptions
Exceptions Mecanisme des exceptions
Les exceptions standard de JDK Déclencher et traı̂ter une exception
Transmission d’information au gestionnaire d’exception
Gestion de plusieurs exceptions

Plan

1 Exceptions
Introdution
Exceptions
Les types d’exceptions
Mecanisme des exceptions
Déclencher et traı̂ter une exception
Transmission d’information au gestionnaire d’exception
Gestion de plusieurs exceptions
2 Les exceptions standard de JDK
Les exceptions standard
Classification des exceptions standard

Laila AMIR Programmations Orientées Objet 3 / 27


Exceptions
Les types d’exceptions
Exceptions Mecanisme des exceptions
Les exceptions standard de JDK Déclencher et traı̂ter une exception
Transmission d’information au gestionnaire d’exception
Gestion de plusieurs exceptions

Exceptions
Définition
Une exception est un événement exceptionnel qui se produit lors de
l’exécution d’un programme, et qui compromets la poursuite de son
execution (il peut provoquer un fonctionnement anormal).

Exemples d’exceptions :
Débordement de tableau ou de pile,
Division par 0,
Donnees incorrectes (desordre, mauvais type ...),
Resultat inattendu (overflow...),
Lecture d’une donnée erronée ou d’une fin de fichier prématurée
(informations incompletes).
Laila AMIR Programmations Orientées Objet 4 / 27
Exceptions
Les types d’exceptions
Exceptions Mecanisme des exceptions
Les exceptions standard de JDK Déclencher et traı̂ter une exception
Transmission d’information au gestionnaire d’exception
Gestion de plusieurs exceptions

Les types d’exceptions


Une situation exceptionnelle peut être assimilée à une erreur, c’est à
dire une situation qui est externe à la tâche principale d’un programme.
En Java, on distingue trois types d’erreurs, qui sont de degrés de
gravité différents, à savoir :
Les erreurs graves qui causent généralement l’arrêt du programme
et qui sont représentées par la classe [Link] .
Les erreurs qui doivent généralement être traitées et qui sont
représentées par la classe [Link].
Les erreurs qui peuvent ne pas être traitées et qui sont des objets
de la classe [Link] qui hérite de
[Link].
Toutes ces classes héritent de la classe [Link].
Laila AMIR Programmations Orientées Objet 5 / 27
Exceptions
Les types d’exceptions
Exceptions Mecanisme des exceptions
Les exceptions standard de JDK Déclencher et traı̂ter une exception
Transmission d’information au gestionnaire d’exception
Gestion de plusieurs exceptions

Mecanisme des exceptions

Comment traiter ces cas exceptionnels ?


Trouver un moyen pour ne pas empêcher ou gêner le
deroulement du programme
Garder la lisibilite du code : la gestion des erreurs ne doit pas
rendre incomprehensible le code (principal) du programme.

Dans les langages modernes : mecanisme des exceptions

Laila AMIR Programmations Orientées Objet 6 / 27


Exceptions
Les types d’exceptions
Exceptions Mecanisme des exceptions
Les exceptions standard de JDK Déclencher et traı̂ter une exception
Transmission d’information au gestionnaire d’exception
Gestion de plusieurs exceptions

try/catch
Le langage Java offre un mécanisme très souple pour la gestion des
exceptions. Il utilise des objets pour représenter les exceptions et
l’héritage pour hiérarchiser les différents types d’exception. Ce
mécanisme permet à la fois :
d’isoler la partie du code générant une anomalie du reste du
programme,
de dissocier les opérations de détection et de traitement de cette
anomalie.
Les exceptions sont traitées via des blocs try/catch
(essayer/attraper). On exécute les instructions susceptibles de lever
une exception dans le bloc try et en cas d’erreur ce sont les
instructions du bloc catch qui seront exécutées, pourvu qu’on
attrape bien l’exception levée.
Laila AMIR Programmations Orientées Objet 7 / 27
Exceptions
Les types d’exceptions
Exceptions Mecanisme des exceptions
Les exceptions standard de JDK Déclencher et traı̂ter une exception
Transmission d’information au gestionnaire d’exception
Gestion de plusieurs exceptions

Comment déclencher une exception avec throw ?


Dans l’exemple, on ne manipule que des
class ErrConst extends
points ayant des coordonnées positifs.
Exception{ }
La classe ErrConst dérive de la classe class Point{
standard Exception. private int x, y ;
public Point(int x, int y)
La présence de throws ErrConst, dans
throws ErrConst {
l’en-tête du constructeur, précise que la if ((x<0) || (y<0))
méthode est susceptible de déclencher throw new ErrConst();
une exception de type ErrConst. this.x = x ; this.y = y ;
Dans le constructeur, et pour une valeur }
négative, on déclenche une exception à public void affiche(){
[Link] (x+””+y);
l’aide de l’instruction throw suivie par un
}
objet de type ErrConst, ce type servira à }
identifier l’exception concernée.
Laila AMIR Programmations Orientées Objet 8 / 27
Exceptions
Les types d’exceptions
Exceptions Mecanisme des exceptions
Les exceptions standard de JDK Déclencher et traı̂ter une exception
Transmission d’information au gestionnaire d’exception
Gestion de plusieurs exceptions

Throw et throws

Le mot-clé ”Throw” permet de soulever et déclencher une exception, on


lui fournit un objet qui représente une exception.

Le mot-clé ”Throws” s’utilise au niveau de la signature d’une méthode


pour préciser que celle-ci est susceptible de soulever une exception.

Laila AMIR Programmations Orientées Objet 9 / 27


Exceptions
Les types d’exceptions
Exceptions Mecanisme des exceptions
Les exceptions standard de JDK Déclencher et traı̂ter une exception
Transmission d’information au gestionnaire d’exception
Gestion de plusieurs exceptions

Utilisation d’un gestionnaire d’exception


Pour gérer les éventuelles exceptions de type ErrConst que son emploi
peut déclencher. Il faut :

inclure dans le bloc try les instructions try


dans lesquelles on risque de voir {
déclenchée une telle exception : // instructions
}

faire suivre ce bloc de la définition des catch (ErrConst e)


différents gestionnaires d’exception (ici, {
un seul suffit). Chaque définition de [Link] (”Erreur
gestionnaire est précédée d’un en-tête construction ”) ;
[Link] (-1) ;
introduit par le mot-clé catch.
}

Laila AMIR Programmations Orientées Objet 10 / 27


Exceptions
Les types d’exceptions
Exceptions Mecanisme des exceptions
Les exceptions standard de JDK Déclencher et traı̂ter une exception
Transmission d’information au gestionnaire d’exception
Gestion de plusieurs exceptions

Programme test
Voici on programme de test dans lequel nous provoquons une exception :

public class Except1{


public static void main (String args[]){
try{
Point a = new Point (1, 4) ; [Link]() ;
Point b = new Point (-3, 5) ; [Link]() ;
} 14
catch (ErrConst e){ Erreur construction
[Link] (”Erreur construction ”);
[Link] (-1) ;
}
}
}

Laila AMIR Programmations Orientées Objet 11 / 27


Exceptions
Les types d’exceptions
Exceptions Mecanisme des exceptions
Les exceptions standard de JDK Déclencher et traı̂ter une exception
Transmission d’information au gestionnaire d’exception
Gestion de plusieurs exceptions

Remarques

On n’y déclenchait et on n’y traitait qu’un seul type exception ; nous


verrons bientôt comment en gérer plusieurs ;
Le gestionnaire d’exception ne recevait aucune information ; plus
exactement, il recevait un objet sans valeur qu’il ne cherchait pas à
utiliser ; nous verrons comment utiliser cet objet pour communiquer
une information au gestionnaire ;
Nous n’exploitions pas les fonctionnalités de la classe Exception
dont dérive notre classe ErrConst ;
Le gestionnaire d’exception se contentait d’interrompre le
programme ; nous verrons qu’il est possible de poursuivre
l’exécution.

Laila AMIR Programmations Orientées Objet 12 / 27


Exceptions
Les types d’exceptions
Exceptions Mecanisme des exceptions
Les exceptions standard de JDK Déclencher et traı̂ter une exception
Transmission d’information au gestionnaire d’exception
Gestion de plusieurs exceptions

Transmission d’information au gestionnaire d’exception

On peut transmettre une information au gestionnaire d’exception :

par le biais de l’objet fourni dans l’instruction throw,

par l’intermédiaire du constructeur de l’objet exception.

Laila AMIR Programmations Orientées Objet 13 / 27


Exceptions
Les types d’exceptions
Exceptions Mecanisme des exceptions
Les exceptions standard de JDK Déclencher et traı̂ter une exception
Transmission d’information au gestionnaire d’exception
Gestion de plusieurs exceptions

Par l’objet fourni à l’instruction throw

Comme nous l’avons vu, l’objet fourni à l’instruction throw sert à


choisir le bon gestionnaire d’exception.

Mais il est aussi à transmettre une information sous la forme d’un


argument

Il suffit pour cela de prévoir les champs appropriés dans la classe


correspondante.

Laila AMIR Programmations Orientées Objet 14 / 27


Exceptions
Les types d’exceptions
Exceptions Mecanisme des exceptions
Les exceptions standard de JDK Déclencher et traı̂ter une exception
Transmission d’information au gestionnaire d’exception
Gestion de plusieurs exceptions

Dans cet exemple, les champs abs et ord classe ErrConst permettent de
transmettre les coordonnées reçues par le constructeur de Point.
Leurs valeurs sont fixées lors de la construction d’un objet de type
ErrConst.
class Point{
private int x, y ;
public Point(int x, int y) throws ErrConst {
if ((x<0) || (y<0)) throw new ErrConst( x, y) ;
this.x = x ; this.y = y ;
}
public void affiche(){[Link] (”coords : ” + x + ” ” + y);}
}
class ErrConst extends Exception{
public int abs, ord;
ErrConst (int abs, int ord){[Link] = abs ; [Link] = ord;}
}
Laila AMIR Programmations Orientées Objet 15 / 27
Exceptions
Les types d’exceptions
Exceptions Mecanisme des exceptions
Les exceptions standard de JDK Déclencher et traı̂ter une exception
Transmission d’information au gestionnaire d’exception
Gestion de plusieurs exceptions

public class Exinfo1{


public static void main (String args[]){
try{
Point a = new Point (1, 4) ; [Link]() ;
Point b = new Point (-3, 5) ; [Link]() ;
}
catch (ErrConst e){
[Link] (”Erreur construction Point”);
[Link] (” coords souhaitees : ” + [Link] + ” ” + [Link]) ;
[Link] (-1) ;
}
}
}

coords : 1 4
Erreur construction Point
coords souhaitees : -3 5
Laila AMIR Programmations Orientées Objet 16 / 27
Exceptions
Les types d’exceptions
Exceptions Mecanisme des exceptions
Les exceptions standard de JDK Déclencher et traı̂ter une exception
Transmission d’information au gestionnaire d’exception
Gestion de plusieurs exceptions

Par le constructeur de la classe Exception

On peut transmettre un ”message” au gestionnaire, sous forme


d’une information de type chaı̂ne en exploitant le fait que la classe
Exception (dont dérive la classe ErrConst) dispose d’un constructeur à
un argument de type String dont on peut récupérer la valeur à l’aide
de la méthode getMessage (dont héritera ErrConst).

Pour cela, il suffit de prévoir dans la classe ErrConst, un constructeur à un


argument de type String, qu’on retransmettra au constructeur de la
super-classe Exception.

Laila AMIR Programmations Orientées Objet 17 / 27


Exceptions
Les types d’exceptions
Exceptions Mecanisme des exceptions
Les exceptions standard de JDK Déclencher et traı̂ter une exception
Transmission d’information au gestionnaire d’exception
Gestion de plusieurs exceptions

Par le constructeur de la classe Exception


Voici une adaptation dans ce sens du programme précédent

class Point{
private int x, y ;
public Point(int x, int y) throws ErrConst {
if ((x<0) || (y<0))
throw new ErrConst(”Erreur constr. avec coords ”+ x +” ”+ y);
this.x = x ; this.y = y ;
}
public void affiche(){[Link] (”coords : ” + x + ” ” + y);}
}
class ErrConst extends Exception{
ErrConst (String mes){super(mes) ;}
}

Laila AMIR Programmations Orientées Objet 18 / 27


Exceptions
Les types d’exceptions
Exceptions Mecanisme des exceptions
Les exceptions standard de JDK Déclencher et traı̂ter une exception
Transmission d’information au gestionnaire d’exception
Gestion de plusieurs exceptions

Par le constructeur de la classe Exception


public class Exinfo2{
public static void main (String args[]){
try{
Point a = new Point (1, 4) ; [Link]() ;
b = new Point (-3, 5) ; [Link]() ;
}
catch (ErrConst e){
[Link] ([Link]());
[Link] (-1) ;
}
}
}

coords : 1 4
Erreur constr. avec coords -3 5
Laila AMIR Programmations Orientées Objet 19 / 27
Exceptions
Les types d’exceptions
Exceptions Mecanisme des exceptions
Les exceptions standard de JDK Déclencher et traı̂ter une exception
Transmission d’information au gestionnaire d’exception
Gestion de plusieurs exceptions

Gestion de plusieurs exceptions


On peut déclencher et traiter plusieurs exceptions. Voici un exemple deux
types d’exceptions. Nous considérons une classe Point munie :
du constructeur précédent, déclenchant toujours une exception
ErrConst,
d’une méthode deplace qui s’assure que le déplacement ne conduit
pas à une coordonnée négative ; si tel est le cas, elle déclenche une
exception ErrDepl (on crée donc, ici encore, une classe ErrDepl) :

public void deplace (int dx, int dy) throws ErrDepl


{
if ( ((x+dx)<0) || ((y+dy)<0)) throw new ErrDepl();
x += dx ; y += dy ;
}

Laila AMIR Programmations Orientées Objet 20 / 27


Exceptions
Les types d’exceptions
Exceptions Mecanisme des exceptions
Les exceptions standard de JDK Déclencher et traı̂ter une exception
Transmission d’information au gestionnaire d’exception
Gestion de plusieurs exceptions

Gestion de plusieurs exceptions


Lors de l’utilisation de notre classe Point, nous pouvons détecter les deux
exceptions potentielles ErrConst et ErrDepl :
try{
// bloc dans lequel on souhaite détecter les exceptions ErrConst et ErrDepl
}
catch (ErrConst e){ // gestionnaire de l’exception ErrConst
[Link] (”Erreur construction”) ;
[Link] (-1) ;
}
catch (ErrDepl e) {// gestionnaire de l’exception ErrDepl
[Link] (”Erreur deplacement”) ;
[Link] (-1) ;
}

Laila AMIR Programmations Orientées Objet 21 / 27


Exceptions Les exceptions standard
Les exceptions standard de JDK Classification des exceptions standard

Plan

1 Exceptions
Introdution
Exceptions
Les types d’exceptions
Mecanisme des exceptions
Déclencher et traı̂ter une exception
Transmission d’information au gestionnaire d’exception
Gestion de plusieurs exceptions
2 Les exceptions standard de JDK
Les exceptions standard
Classification des exceptions standard

Laila AMIR Programmations Orientées Objet 22 / 27


Exceptions Les exceptions standard
Les exceptions standard de JDK Classification des exceptions standard

Catégories

Java fournit de nombreuses classes prédéfinies dérivées de la


classe Exception, qui sont utilisées par certaines méthodes standard
; par exemple, la classe IOException et ses dérivées sont utilisées par
les méthodes d’entrées-sorties.

Certaines classes exception sont même utilisées par la machine


virtuelle à la rencontre de situations anormales telles qu’un indice
de tableau hors limites, une taille de tableau négative...

Laila AMIR Programmations Orientées Objet 23 / 27


Exceptions Les exceptions standard
Les exceptions standard de JDK Classification des exceptions standard

Les exceptions standard

Ces exceptions standard se classent en deux catégories :

Les exceptions explicites (on dit aussi sous contrôle) correspondent


à ce que nous venons d’étudier. Elles doivent être traitées par une
méthode, ou bien être mentionnées dans la clause throws.

Les exceptions implicites (ou hors contrôle) n’ont pas à être


mentionnées dans une clause throw et on n’est pas obligé de les
traiter.

Laila AMIR Programmations Orientées Objet 24 / 27


Exceptions Les exceptions standard
Les exceptions standard de JDK Classification des exceptions standard

Classification des exceptions standard

Le JDK contient des classes d’exceptions dont voici un extrait :

Laila AMIR Programmations Orientées Objet 25 / 27


Exceptions Les exceptions standard
Les exceptions standard de JDK Classification des exceptions standard

Exemple 1
String chaine ;
int valeur ;
...
try {
valeur = [Link] (chaine) ;
}
catch (NumberFormatException e){
[Link] (”mauvais format ”) ;
}
try {
a = tab [i] ;
}
catch (ArrayIndexOutOfBoundsException ex){
a=0;
}
Laila AMIR Programmations Orientées Objet 26 / 27
Exceptions Les exceptions standard
Les exceptions standard de JDK Classification des exceptions standard

Exemple 2
Dans cet exemple vu que b était
nulle, le programme va générer
public class Div1 {
une exception lors de l’exécution,
public static int divise (int x, int y)
car une division par zéro vient {
d’avoir lieu. return (x/y);
Le système affiche une exception }
de type : static void main (String [] args) {
[Link]: / int c=0,a=1,b=0;
c= divise(a,b);
by zero. [Link](”res:”+ c);
Une erreur s’est produite lors de }
l’appel de la méthode divise, (la }
division de x/y) ; elle correspond
à une division par zéro.
Laila AMIR Programmations Orientées Objet 27 / 27

Vous aimerez peut-être aussi