Upload
cosme-gay
View
106
Download
3
Embed Size (px)
Citation preview
11111111
Gestion des exceptionsGestion des exceptions
11-11-22
ObjectifsObjectifs
À la fin de ce cours, vous serez capables de :
• Expliquer les concepts de base de la gestion des exceptions
• Ecrire le code permettant de récupérer et gérer des exceptions
• Ecrire le code permettant de générer des exceptions
• Créer vos propres exceptions
À la fin de ce cours, vous serez capables de :
• Expliquer les concepts de base de la gestion des exceptions
• Ecrire le code permettant de récupérer et gérer des exceptions
• Ecrire le code permettant de générer des exceptions
• Créer vos propres exceptions
11-11-33
Qu'est-ce qu'une exception ?Qu'est-ce qu'une exception ?
Une exception est un événement imprévu.Une exception est un événement imprévu.
11-11-44
Comment Java gère-t-il les exceptions ?Comment Java gère-t-il les exceptions ?
• Une méthode génère une exception.
• Un gestionnaire récupère l'exception.
• Une méthode génère une exception.
• Un gestionnaire récupère l'exception.
Objet d'exception
OuiOui NonNon
Gestionnairepour cette
exception ?
11-11-55
Avantages des exceptions Java : le code de gestion des erreurs est un code distinct
Avantages des exceptions Java : le code de gestion des erreurs est un code distinct
• En programmation traditionnelle, la gestion des erreurs complique souvent la lecture du code.
• Java distingue la gestion des erreurs imprévues des travaux principaux du programme.
• Le code ainsi obtenu est plus lisible et mieux protégé contre les bogues.
• En programmation traditionnelle, la gestion des erreurs complique souvent la lecture du code.
• Java distingue la gestion des erreurs imprévues des travaux principaux du programme.
• Le code ainsi obtenu est plus lisible et mieux protégé contre les bogues.
11-11-66
Avantages des exceptions Java : les erreurs remontent vers la pile d'appels
Avantages des exceptions Java : les erreurs remontent vers la pile d'appels
method4method4
method3method3
method2method2
method1 //handle error
method1 //handle error Code
d'erreurCode d'erreur
method4method4
method3method3
method2method2
Method1//handle exMethod1
//handle ex
ExceptionexExceptionex
Chaque méthode vérifie les erreurs et renvoie un code d'erreur à sa méthode appelante.
Chaque méthode vérifie les erreurs et renvoie un code d'erreur à sa méthode appelante.
method4 génère une exception ; method1 la récupère.method4 génère une exception ; method1 la récupère.
Gestion traditionnelle des erreursGestion traditionnelle des erreurs
Exceptions JavaExceptions Java
Code d'erreurCode d'erreur
Code d'erreurCode d'erreur
11-11-77
Avantages des exceptions Java : les exceptions ne peuvent pas être ignorées
Avantages des exceptions Java : les exceptions ne peuvent pas être ignorées
Gestion traditionnelle des erreursGestion traditionnelle des erreurs
Si method3 ignore l'erreur, celle-ci ne sera jamais gérée.Si method3 ignore l'erreur, celle-ci ne sera jamais gérée.
method4method4
method3method3
method2method2
method1 //handle error
method1 //handle error
Code d'erreurCode d'erreur method4method4
method3method3
method2method2
Method1//handle exMethod1
//handle ex
ExceptionexExceptionex
Exceptions JavaExceptions Java
L'exception doit être récupérée et gérée quelque part.L'exception doit être récupérée et gérée quelque part.
11-11-88
Exceptions vérifiées, exceptions non vérifiées et erreurs
Exceptions vérifiées, exceptions non vérifiées et erreurs
Toutes les erreurs et exceptions étendent la classe Throwable.Toutes les erreurs et exceptions étendent la classe Throwable.
Throwable
Error Exception
Erreurs non Erreurs non réparablesréparables
Exceptions Exceptions vérifiéesvérifiées
Exceptions (d'exécution) Exceptions (d'exécution) non vérifiéesnon vérifiées
RuntimeException
11-11-99
Que faire avec une exception ?Que faire avec une exception ?
• Récupérer l'exception et la gérer.
• Laisser l'exception passer à la méthode appelante.
• Récupérer l'exception et générer une exception différente.
• Récupérer l'exception et la gérer.
• Laisser l'exception passer à la méthode appelante.
• Récupérer l'exception et générer une exception différente.
11-11-1010
Récupération et gestion d'une exceptionRécupération et gestion d'une exception
• Insérez l'appel de méthode dans un bloc try.
• Gérez chacune des exceptions dans un bloc catch.
• Effectuez les derniers traitements dans un bloc finally.
• Insérez l'appel de méthode dans un bloc try.
• Gérez chacune des exceptions dans un bloc catch.
• Effectuez les derniers traitements dans un bloc finally.
try {
// call the method
}
catch (exception1) {
// handle exception1
}
catch (exception2) {
// handle exception2
}…
finally {
// any final processing
}
11-11-1111
Récupération d'une seule exceptionRécupération d'une seule exception
int qty;
String s = getQtyFromForm();
try {
// Might throw NumberFormatException
qty = Integer.parseInt(s);
}
catch ( NumberFormatException e ) {
// Handle the exception
}
// If no exceptions were thrown, we end up here
11-11-1212
Récupération de plusieurs exceptionsRécupération de plusieurs exceptions
try {
// Might throw MalformedURLException
URL u = new URL(str);
// Might throw IOException
URLConnection c = u.openConnection();
}
catch (MalformedURLException e) {
System.err.println("Could not open URL: " + e);
}
catch (IOException e) {
System.err.println("Could not connect: " + e);
}
11-11-1313
Nettoyage avec un bloc finallyNettoyage avec un bloc finally
FileInputStream f = null;
try {
f = new FileInputStream(filePath);
while (f.read() != -1)
charcount++;
}
catch(IOException e) {
System.out.println("Error accessing file " + e);
}
finally {
// This block is always executed
f.close();
}
11-11-1414
Récupération et gestion d'une exception : exercice pratique
Récupération et gestion d'une exception : exercice pratique
void makeConnection(String url) {
try {
URL u = new URL(url);
}
catch (MalformedURLException e) {
System.out.println("Invalid URL: " + url);
return;
}
finally {
System.out.println("Finally block");
}
System.out.println("Exiting makeConnection");
}
11-11-1515
Récupération et gestion d'une exception : exercice pratique
Récupération et gestion d'une exception : exercice pratique
void myMethod () {
try {
getSomething();
} catch (IndexOutOfBoundsException e1) {
System.out.println("Caught IOBException ");
} catch (Exception e2) {
System.out.println("Caught Exception ");
} finally {
System.out.println("No more exceptions ");
}
System.out.println("Goodbye");
}
11-11-1616
Passage d'une exception à la méthode appelante
Passage d'une exception à la méthode appelante
• Utilisez throws dans la déclaration de méthode.
• L'exception se propage sur la méthode appelante.
• Utilisez throws dans la déclaration de méthode.
• L'exception se propage sur la méthode appelante.
public int myMethod() throws exception1 {
// code that might throw exception1
}
public URL changeURL(URL oldURL)
throws MalformedURLException {
return new URL("http://www.oracle.com");
}
11-11-1717
Génération d'une exceptionGénération d'une exception
• Utilisez le mot-clé throw pour générer des exceptions.
• Utilisez throws dans la déclaration de méthode.
• Utilisez le mot-clé throw pour générer des exceptions.
• Utilisez throws dans la déclaration de méthode.
public String getValue(int index) throws
IndexOutOfBoundsException {
if (index == null || index >= values.length) {
throw new IndexOutOfBoundsException();
}
…
}
throw new Exception1();
11-11-1818
Création d'une exceptionCréation d'une exception
Étendez la classe Exception.Étendez la classe Exception.
public class UserFileException extends Exception {
public UserFileException (String message) {
super(message);
}
}
public class exception1 extends Exception { … }
11-11-1919
Récupération d'une exception et génération d'une exception différente
Récupération d'une exception et génération d'une exception différente
catch (exception1 e) {
throw new exception2(…);
}
void ReadUserFile throws UserFileException {
try {
// code to open and read userfile
}
catch(IOException e) {
throw new UserFileException(e.toString());
}
}
11-11-2020
RésuméRésumé
Durant ce cours, vous devriez avoir retenu que :
• Vous pouvez utiliser des exceptions Java pour assurer une gestion robuste des erreurs.
• Vous pouvez gérer des exceptions avec try, catch et finally.
• Vous pouvez utiliser le mot-clé throw pour générer une exception.
• Une méthode peut déclarer une exception dans sa signature pour la faire remonter vers la pile d'appels.
Durant ce cours, vous devriez avoir retenu que :
• Vous pouvez utiliser des exceptions Java pour assurer une gestion robuste des erreurs.
• Vous pouvez gérer des exceptions avec try, catch et finally.
• Vous pouvez utiliser le mot-clé throw pour générer une exception.
• Une méthode peut déclarer une exception dans sa signature pour la faire remonter vers la pile d'appels.