0% ont trouvé ce document utile (0 vote)
4 vues28 pages

Gestion des exceptions en Java

Ce document traite de la gestion des exceptions en Java. Il présente les principes des exceptions, des exemples d'utilisation ainsi que l'héritage et le traitement des exceptions.

Transféré par

Tadjou Adom
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)
4 vues28 pages

Gestion des exceptions en Java

Ce document traite de la gestion des exceptions en Java. Il présente les principes des exceptions, des exemples d'utilisation ainsi que l'héritage et le traitement des exceptions.

Transféré par

Tadjou Adom
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

Gestion des exceptions en Java

DAP Programmation objet

Amoudiya SIBITTI & Ichaou SAHM 1

IFNTI S3

29 janvier 2024

1. Inspiré des cours de François Decq et des cours d’Esther Desforges à


l’IFNTI.
Table des matières

Amoudiya SIBITTI & Ichaou SAHM DAP : Gestion des exceptions en Java - IFNTI S3 - 29 janvier 2024 2/1
Présentation des exceptions

Amoudiya SIBITTI & Ichaou SAHM DAP : Gestion des exceptions en Java - IFNTI S3 - 29 janvier 2024 3/1
Principe

Définition

Définition d’une exception


Une exception est un évènement exceptionnel pouvant survenir
lors de l’exécution d’un programme. Celle-ci interrompt alors le
déroulement normal du programme pour entrer dans une branche
de traitement.
Ce que la gestion d’erreur devrait faire
Obliger le développeur à traiter les erreurs importantes
Proposer au développeur de créer son propre jeu d’erreurs
Permettre au développeur de gérer proprement les erreurs

Amoudiya SIBITTI & Ichaou SAHM DAP : Gestion des exceptions en Java - IFNTI S3 - 29 janvier 2024 4/1
Exemples

Séparation code / traitement des erreurs en Pseudo-Code


Traitement dans le programme
fonction lireFichier() : TypeCodeErreur
Déclarations
erreur : TypeCodeErreur
erreur ← 0 Traitement avec exceptions
si fichier ouvert alors
fonction lireFichier() : NULL
obtenir sa taille
essayer :
si tailleObtenue alors
ouvrir le fichier
allouer la mémoire
obtenir sa taille
si mémoireDisponible alors
allouer la mémoire
charger le fichier en mémoire
charger le fichier en mémoire
si erreurLecture alors
fermer le fichier
erreur ← 1
exception OuvertureFichierException :
fin si
traiter l’erreur
sinon
exception CalculTailleFichierException :
erreur ← 2
traiter l’erreur
fin si
exception AllocationMemoireException :
sinon
traiter l’erreur
erreur ← 4
exception LectureFichierException :
fin si
traiter l’erreur
fin si
exception fileCloseFailed :
fermer le fichier
traiter l’erreur
si le fichier ne se ferme pas et erreur = 0 alors
fin fonction
erreur ← 8
fin si
retourner erreur
fin fonction

Amoudiya SIBITTI & Ichaou SAHM DAP : Gestion des exceptions en Java - IFNTI S3 - 29 janvier 2024 5/1
Exemples

Propagation des erreurs en Pseudo-Code


Sans propagation
fonction methode1() : NULL
Déclaration : erreur : TypeCodeErreur
erreur ← methode2()
si erreur alors Avec propagation
traiter erreur
sinon fonction methode1() : NULL
code de la methode essayer :
fin si methode2()
fin fonction exception Exception :
fonction methode2() : TypeCodeErreur traiter l’erreur
Déclaration : erreur : TypeCodeErreur fin fonction
erreur ← methode3()
si erreur alors
traiter erreur fonction methode2() propage Exception
sinon methode3()
code de la methode code de la methode
fin si fin fonction
fin fonction
fonction methode3() : TypeCodeErreur
Déclaration : erreur : TypeCodeErreur fonction methode3() propage Exception
erreur ← lireFichier () lireFichier ()
si erreur alors code de la methode
traiter erreur fin fonction
sinon
code de la methode
fin si
fin fonction

Amoudiya SIBITTI & Ichaou SAHM DAP : Gestion des exceptions en Java - IFNTI S3 - 29 janvier 2024 6/1
Héritage

Héritage des exceptions

Organisation
Les exceptions sont des classes, elles peuvent donc être héritées.

Exemple de classes d’exception fournies par l’API standard :


NullPoiterException : Signale qu’une référence null est
utilisée pour invoquer une méthode ou accéder à un attribut.
NumberFormatException : Signale qu’il n’est pas possible
de convertir une chaı̂ne de caractères en nombre car la chaı̂ne
de caractère ne correspond pas à un nombre valide.

Amoudiya SIBITTI & Ichaou SAHM DAP : Gestion des exceptions en Java - IFNTI S3 - 29 janvier 2024 7/1
Héritage

Hiérarchie en Java
Héritage partiel des Exceptions non contrôlées ou prédéfinies
exceptions en Java [Link] : problème dans
la JVM → arrêt du programme
[Link] :
prédéfinie → gestion par le
développeur facultative (ex : x/0)

Exceptions contrôlées
[Link] :
propagation/traitement par le
développeur obligatoire

Méthodes utiles de l’interface Throwable


void printStackTrace () : écrit la hiérarchie de l’exception
String toString () : retourne entre autres le message
Amoudiya SIBITTI & Ichaou SAHM DAP : Gestion des exceptions en Java - IFNTI S3 - 29 janvier 2024 8/1
Héritage

Exemple d’exception non contrôlée


[Link]
p a c k a g e i f n t i . dap . c o u r s 4 . n o n c o n t r o l e e s ;
public class DivisionParZero {
s t a t i c i n t meth ( i n t a , i n t b ) {
r e t u r n a /b ;
}
p u b l i c s t a t i c v o i d main ( S t r i n g [ ] param ) {
int c ;
c = meth ( 5 , 3 ) ;
System . o u t . p r i n t l n ( ” c = ” + c ) ;
c = meth ( 3 , 0 ) ;
System . o u t . p r i n t l n ( ” c = ” + c ) ;
}
}

Exécution
java -cp classes [Link]
c = 1
Exception in thread "main" [Link]: / by zero
at [Link]([Link])
at [Link]([Link])

Amoudiya SIBITTI & Ichaou SAHM DAP : Gestion des exceptions en Java - IFNTI S3 - 29 janvier 2024 9/1
Gestion et traitement des exceptions

Amoudiya SIBITTI & Ichaou SAHM DAP : Gestion des exceptions en Java - IFNTI S3 - 29 janvier 2024 10 / 1
Vocabulaire

Fonctionnement des exceptions en Java


Principe
Lever une exception consiste à dérouter (ne plus suivre) le flot
d’instructions pour :
soit la propager à la méthode appelante
soit la traiter directement dans la classe courante
Si l’exception est propagée au main alors le programme s’arrête et
affiche des informations la caractérisant.

Informations contenues dans une exception levée


son type : pour permettre le bon traitement
son lieu de levée donné par la “pile des appels” : pour localiser
le problème
son message la caractérisant : pour informer sur l’exception

Amoudiya SIBITTI & Ichaou SAHM DAP : Gestion des exceptions en Java - IFNTI S3 - 29 janvier 2024 11 / 1
Vocabulaire

Lever une exception / Propager une exception

Lever une exception


Lever une exception consiste à déclencher le déroutage du flot
d’instructions du programme pour la traiter ou la propager.

Propager une exception


Propager une exception consiste à renvoyer son traitement à la
méthode appelante, c’est-à-dire à celle qui a appelé la méthode
actuellement exécutée.

Remarque
En Java, toute exception non contrôlée ([Link] ou
[Link]) levée par une méthode est
implicitement propagée.

Amoudiya SIBITTI & Ichaou SAHM DAP : Gestion des exceptions en Java - IFNTI S3 - 29 janvier 2024 12 / 1
Vocabulaire

Attraper/Traiter une exception


Définition
Attraper une exception consiste à dérouter le flot d’instructions vers une
autre partie du programme (au sein de la même portée) permettant de la
traiter. On parle de transfert de contrôle.

Remarques pour Java


La clause try permet de définir la partie du programme susceptible
de lever une exception.
L’exécution est déroutée dans une clause catch
Une seule clause catch est exécutée (la première qui correspond)
Il est possible d’attraper plusieurs exceptions en une seule clause
catch grâce à une classe mère
La clause finally facultative permet d’exécuter des opérations
coûte que coûte après traitement (ex : fermeture de fichiers, . . .)
Il est possible de mélanger propagation et traitement des exceptions
au sein d’un même programme
Amoudiya SIBITTI & Ichaou SAHM DAP : Gestion des exceptions en Java - IFNTI S3 - 29 janvier 2024 13 / 1
Syntaxes et exemples

Syntaxes (1/2)

Lever une exception


methode ( . . . ) . . . {
...
t h r o w new U n e E x c e p t i o n ( ) ;
...
}

Propager une exception


methode ( . . . ) t h r o w s E x c e p t i o n 1 [ , Exception2 , . . . , ExceptionN ] {
...
// A p p e l à une ou p l u s i e u r s mé t h o d e s s u s c e p t i b l e s de
// l e v e r d e s e x c e p t i o n s de c l a s s e s d e s e x c e p t i o n s dé f i n i e s
// d a n s l a s i g n a t u r e ou de =
l e u r s s o u s c l a s s e s . La c l a u s e
// t h r o w s f a i t p a r t i e de l a s i g n a t u r e de l a mé t h o d e .
...
}

Amoudiya SIBITTI & Ichaou SAHM DAP : Gestion des exceptions en Java - IFNTI S3 - 29 janvier 2024 14 / 1
Syntaxes et exemples

Syntaxes (2/2)
Attraper/Traiter une exception
methode ( . . . ) {
. . . // Ex é c u t é d a n s t o u s l e s c a s .
try {
// Ex é c u t i o n de c o d e s u s c e p t i b l e de l e v e r d e s e x c e p t i o n s
=
// de c l a s s e s E x c e p t i o n N ou l e u r s s o u s c l a s s e s .
}
catch ( Exception1 e ) {
// E x c e p t i o n 1 ne d o i t p a s ê t r e anc ê t r e de E x c e p t i o n 2 .
}
catch ( Exception2 e ) { }
c a t c h ( E x c e p t i o n 3 | E x c e p t i o n 4 e ) { // d e p u i s j a v a 7
// É v i t e l a d u p l i c a t i o n de c o d e e t l ’ u t i l i s a t i o n d ’ une
// c l a s s e d ’ e x c e p t i o n t r o p v a s t e ( c l a s s e mè r e p a r e x ) .
}
finally {
// Code t o u j o u r s e x é c u t é s a u f en c a s de s o r t i e de
// l a JVM ou de l ’ i n t e r r u p t i o n ou mort d ’ un t h r e a d .
}
. . . // Ex é c u t é s i a u c u n e e x c e p t i o n n ’ e s t l e v é e d a n s l e t r y .
}
Amoudiya SIBITTI & Ichaou SAHM DAP : Gestion des exceptions en Java - IFNTI S3 - 29 janvier 2024 15 / 1
Syntaxes et exemples

Exemple pour comprendre la clause finally


[Link]
import java . io . FileReader ;
import java . io . FileNotFoundException ;
public class TraitementFinally {
p u b l i c i n t methodeException ( i n t v ) {
System . o u t . p r i n t l n ( ) ; // Ex é c u t é d a n s t o u s l e s c a s .
try {
i f ( v == 2 ) { new F i l e R e a d e r ( ” F i c h i e r Q u i N E x i s t e P a s ” ) ; }
i f ( v < 0) { r e t u r n v ; }
i f ( v > 0) { v = v /0; }
}
catch ( ArithmeticException e ) {
System . e r r . p r i n t l n ( ” J e s u i s p a s s é p a r l ’ e x c e p t i o n ”+e . g e t M e s s a g e ( ) ) ;
return 42;
}
catch ( FileNotFoundException e ) {
System . e r r . p r i n t l n ( ” J e s u i s p a s s é p a r l ’ e x c e p t i o n ”+e . g e t M e s s a g e ( ) ) ;
System . e x i t ( 1 3 ) ;
}
f i n a l l y { System . o u t . p r i n t l n ( ” Je s u i s p a s s é p a r f i n a l l y ! ! ! ” ) ; }
System . o u t . p r i n t l n ( ” J ’ a i f i n i ! ” ) ; // Ex é c u t é s i a u c u n e e x c e p t i o n
return 1234; // n ’ e s t l e v é e d a n s l e t r y .
}
p u b l i c s t a t i c v o i d main ( S t r i n g [ ] a r g s ) {
T r a i t e m e n t F i n a l l y t f = new T r a i t e m e n t F i n a l l y ( ) ;
f o r ( i n t i ==1; i <3; i ++) { System . o u t . p r i n t l n ( t f . m e t h o d e E x c e p t i o n ( i ) ) ; }
}
}

Amoudiya SIBITTI & Ichaou SAHM DAP : Gestion des exceptions en Java - IFNTI S3 - 29 janvier 2024 16 / 1
Syntaxes et exemples

Exemple avec un tableau


[Link]
p a c k a g e i f n t i . dap . c o u r s 4 . t a b l e a u ;
public c l a s s TableauEntierNaturelDynamique {
p r i v a t e i n t [ ] tab ;
public TableauEntierNaturelDynamique ( i n t t a i l l e d e b a s e ) {
t a b = new i n t [ t a i l l e d e b a s e ] ;
}
p u b l i c i n t g e t E n t i e r ( i n t i n d i c e ) throws IndexOutOfBoundsException {
i f ( i n d i c e < 0 | | i n d i c e >= t a b . l e n g t h ) {
t h r o w new I n d e x O u t O f B o u n d s E x c e p t i o n ( ” i n d i c e non v a l i d e ” ) ;
}
r e t u r n tab [ i n d i c e ] ;
}
public void setEntier ( int indice , int valeur )
throws IndexOutOfBoundsException , I l l e g a l A r g u m e n t E x c e p t i o n {
i f ( v a l e u r < 0 ) { t h r o w new I l l e g a l A r g u m e n t E x c e p t i o n ( ” E n t i e r < 0 ” ) ; }
try {
tab [ i n d i c e ] = v a l e u r ;
}
catch ( IndexOutOfBoundsException e ) {
i f ( i n d i c e < 0 ) { t h r o w new I n d e x O u t O f B o u n d s E x c e p t i o n ( ” I n d i c e < 0 ” ) ; }
i n t [ ] tabtmp = new i n t [ i n d i c e + 1 ] ;
System . a r r a y c o p y ( tab , 0 , tabtmp , 0 , t a b . l e n g t h ) ;
tabtmp [ i n d i c e ] = v a l e u r ;
t a b = tabtmp ;
}
}
}

Amoudiya SIBITTI & Ichaou SAHM DAP : Gestion des exceptions en Java - IFNTI S3 - 29 janvier 2024 17 / 1
Création d’exceptions

Amoudiya SIBITTI & Ichaou SAHM DAP : Gestion des exceptions en Java - IFNTI S3 - 29 janvier 2024 18 / 1
Principe

Utilisation et syntaxe

But
Créer son propre système d’erreurs
Traduire des exceptions de “trop bas niveau” (trop spécifiques
donc non gérées par défaut)

Syntaxe
Les exceptions sont des classes qui doivent hériter de Exception
ou de RuntimeException.

Amoudiya SIBITTI & Ichaou SAHM DAP : Gestion des exceptions en Java - IFNTI S3 - 29 janvier 2024 19 / 1
Principe

Exemple (1/4)

Hiérarchie d’exceptions créées

Amoudiya SIBITTI & Ichaou SAHM DAP : Gestion des exceptions en Java - IFNTI S3 - 29 janvier 2024 20 / 1
Principe

Exemple (2/4)
[Link]
p a c k a g e i f n t i . dap . c o u r s 4 . e x c e p t i o n s T a b l e a u ;
pu bl ic c l a s s TableauEntierNonTrouveException
extends TableauEntierNaturelDynamiqueException {
pu bl ic TableauEntierNonTrouveException ( String s ) {
super ( s ) ;
}
pu bl ic TableauEntierNonTrouveException () { }
}

[Link]
p a c k a g e i f n t i . dap . c o u r s 4 . e x c e p t i o n s T a b l e a u ;
public cl as s TableauIndiceHorsBornesException
extends TableauEntierNaturelDynamiqueException {
public TableauIndiceHorsBornesException ( String s ) {
super ( s ) ;
}
public TableauIndiceHorsBornesException () { }
}

Et ainsi de suite pour les autres exceptions à créer...


Amoudiya SIBITTI & Ichaou SAHM DAP : Gestion des exceptions en Java - IFNTI S3 - 29 janvier 2024 21 / 1
Principe

Exemple (3/4)
[Link] (début)
p a c k a g e i f n t i . dap . c o u r s 4 . e x c e p t i o n s T a b l e a u ;
public c l a s s TableauEntierNaturelDynamiqueAvecException {
...
p u b l i c i n t g e t E n t i e r ( i n t i n d i c e ) throws TableauIndiceHorsBornesException {
i f ( i n d i c e < 0)
t h r o w new T a b l e a u I n d i c e N e g a t i f E x c e p t i o n ( ” I n d i c e ” +i n d i c e+ ”<0 i n t e r d i t ” ) ;
i f ( i n d i c e >= t a b . l e n g t h )
t h r o w new T a b l e a u I n d i c e H o r s B o r n e s E x c e p t i o n ( ” I n d . ”+i n d i c e+”>=b o r n e s u p . ” ) ;
r e t u r n tab [ i n d i c e ] ;
}
p u b l i c void s e t E n t i e r ( i n t i nd ic e , i n t v a l e u r ) throws
TableauEntierValeurNegativeException , TableauIndiceNegatifException {
i f ( v a l e u r < 0)
t h r o w new T a b l e a u E n t i e r V a l e u r N e g a t i v e E x c e p t i o n ( v a l e u r + ” < 0 ” ) ;
try {
tab [ i n d i c e ] = v a l e u r ;
}
catch ( IndexOutOfBoundsException e ) {
i f ( i n d i c e < 0 ) { t h r o w new T a b l e a u I n d i c e N e g a t i f E x c e p t i o n ( i n d i c e+” < 0 ” ) ; }
i n t [ ] tabtmp = new i n t [ i n d i c e + 1 ] ;
System . a r r a y c o p y ( tab , 0 , tabtmp , 0 , t a b . l e n g t h ) ;
tabtmp [ i n d i c e ] = v a l e u r ;
t a b = tabtmp ;
}
}
...

Amoudiya SIBITTI & Ichaou SAHM DAP : Gestion des exceptions en Java - IFNTI S3 - 29 janvier 2024 22 / 1
Principe

Exemple (4/4)

[Link] (suite)
...
p u b l i c i n t c h e r c h e r E n t i e r ( i n t v a l e u r ) throws
TableauEntierNonTrouveException , TableauEntierValeurNegativeException {
i f ( v a l e u r < 0) {
t h r o w new T a b l e a u E n t i e r V a l e u r N e g a t i v e E x c e p t i o n ( v a l e u r + ” < 0 ” ) ;
}
i f ( t a b . l e n g t h == 0 ) {
t h r o w new T a b l e a u E n t i e r V i d e E x c e p t i o n ( ” T a b l e a u v i d e ” ) ;
}
f o r ( i n t i =0; i<t a b . l e n g t h ; i ++) {
i f ( t a b [ i ] == v a l e u r ) { r e t u r n i ; }
}
t h r o w new T a b l e a u E n t i e r N o n T r o u v e E x c e p t i o n ( v a l e u r + ” non t r o u v é ” ) ;
}
public String toString () {
S t r i n g B u i l d e r s b = new S t r i n g B u i l d e r ( ) ;
f o r ( i n t i =0; i<t a b . l e n g t h ; i ++) {
s b . append ( t a b [ i ] ) ;
i f ( i != t a b . l e n g t h =1) { s b . append ( ” / ” ) ; }
}
r e t u r n sb . t o S t r i n g ( ) ;
}
...
}

Amoudiya SIBITTI & Ichaou SAHM DAP : Gestion des exceptions en Java - IFNTI S3 - 29 janvier 2024 23 / 1
Bonnes pratiques

Cohérence des exceptions


Bonnes pratiques
Le contenu d’un bloc try/catch doit être ”cohérent”, c’est-à-dire
qu’il doit essayer de regrouper un ensemble d’instructions liées.
Il faut toujours traiter une exception dans un catch, c’est-à-dire
qu’il ne faut pas de catch vide ou de d’exception lancée dans un
try sans catch correspondant (exemple slide suivante).
Lors d’un throws, toujours se mettre du point de vue de l’appelant
et non de celui de la classe. Quelle exception l’appelant peut-il
comprendre ? A-t-il la possibilité de la traiter ?
Propager plus de 3 types d’exceptions n’est pas bon et signifie en
général que la méthode fait trop de choses. Il faut donc la découper.
Lors d’un changement de signature, il faut mettre à jour tout le
code. . . Solution : bien spécifier dès le départ et/ou créer une
hiérarchie pour ne spécifier que l’exception mère dans le throws.

Amoudiya SIBITTI & Ichaou SAHM DAP : Gestion des exceptions en Java - IFNTI S3 - 29 janvier 2024 24 / 1
Bonnes pratiques

Exemple d’exception “perdue”


[Link]
p a c k a g e i f n t i . dap . c o u r s 4 . e x c e p t i o n P e r d u e ;

public c l a s s ExceptionPerdue {
p u b l i c s t a t i c v o i d main ( S t r i n g [ ] a r g s ) t h r o w s E x c e p t i o n {
M e s s a g e I n T h e B o t t l e mp = new M e s s a g e I n T h e B o t t l e ( ) ;
t r y { mp . l a n c e E x c e p t i o n P e r d u e ( ) ; }
f i n a l l y { mp . l a n c e E x c e p t i o n Q u i C a c h e ( ) ; }
}
}

c l a s s MessageInTheBottle {
void lanceExceptionPerdue () throws PerdueException {
t h r o w new P e r d u e E x c e p t i o n ( ) ;
}
void lanceExceptionQuiCache () throws QuiCacheException {
t h r o w new Q u i C a c h e E x c e p t i o n ( ) ;
}
}

Question : Que fait ce code ?


Amoudiya SIBITTI & Ichaou SAHM DAP : Gestion des exceptions en Java - IFNTI S3 - 29 janvier 2024 25 / 1
Bonnes pratiques

Chaı̂nage d’exceptions

Principe
Une exception levée est attrapée puis aussitôt une autre exception
est lancée, souvent engendrée par le traitement de la première.

Exemple pour montrer l’utilité


Une classe a besoin de charger une ressource quelconque pour
laquelle il existe plusieurs façons de l’obtenir : BD, fichier, URL, . . .
Il y a donc plusieurs exceptions possibles : SQLException,
FileNotFoundException, MalformedURLException, . . .
On les attrape toutes on lance une exception commune.
Problème : Perte de la cause initiale de l’exception.
Solution : depuis le JDK 1.4, le chaı̂nage d’exceptions est pris en
compte dans Throwable dont hérite toute exception.

Amoudiya SIBITTI & Ichaou SAHM DAP : Gestion des exceptions en Java - IFNTI S3 - 29 janvier 2024 26 / 1
Bonnes pratiques

Exemple de chaı̂nage (1/2)


[Link]
p a c k a g e i f n t i . dap . c o u r s 4 . c h a i n a g e ;
import java . io . * ;
import java . net . * ;
p u b l i c c l a s s Chainage {
p u b l i c v o i d chargerNoms ( F i l e f i c h i e r ) throws Cha rge me ntRessourceException {
try {
F i l e R e a d e r r e a d e r = new F i l e R e a d e r ( f i c h i e r ) ;
// c o d e
}
catch ( IOException e ) {
t h r o w new C h a r g e m e n t R e s s o u r c e E x c e p t i o n ( ”Pb de c h a r g e m e n t du f i c h i e r : ” +
fichier , e );
}
}
p u b l i c v o i d c h a r g e r N o m s (URL u r l ) t h r o w s C h a r g e m e n t R e s s o u r c e E x c e p t i o n {
try {
URLConnection c o n n e c t i o n = u r l . o p e n C o n n e c t i o n ( ) ;
Object obj = connection . getContent ( ) ;
// c o d e
}
ca tc h ( MalformedURLException e ) {
t h r o w new C h a r g e m e n t R e s s o u r c e E x c e p t i o n ( ”Pb de c h a r g e m e n t de l ’URL : ” +
url , e );
}
}
}

Amoudiya SIBITTI & Ichaou SAHM DAP : Gestion des exceptions en Java - IFNTI S3 - 29 janvier 2024 27 / 1
Bonnes pratiques

Exemple de chaı̂nage (2/2)


[Link]
p a c k a g e i f n t i . dap . c o u r s 4 . c h a i n a g e ;
import java . io . * ;
import java . net . * ;
p u b l i c c l a s s ExempleChainageException {
p u b l i c s t a t i c v o i d main ( S t r i n g [ ] a r g s ) t h r o w s E x c e p t i o n {
C h a i n a g e cn = new C h a i n a g e ( ) ;
cn . c h a r g e r N o m s ( new URL( ” h t t p : / / f r e e . f r / ” ) ) ;
cn . c h a r g e r N o m s ( new F i l e ( ” /tmp/ f i c h i e r q u i n e x i s t e p a s ” ) ) ;
}
}

Résultat
Exception in thread "main" [Link]:
Problème de chargement du fichier :/tmp/fichierquinexistepas
at [Link]([Link])
at [Link]([Link])
Caused by: [Link]: /tmp/fichierquinexistepas (No such file or directory)
at [Link](Native Method)
at [Link].<init>([Link])
at [Link].<init>([Link])
at [Link]([Link])
... 1 more

Amoudiya SIBITTI & Ichaou SAHM DAP : Gestion des exceptions en Java - IFNTI S3 - 29 janvier 2024 28 / 1

Vous aimerez peut-être aussi