20
11 11 Gestion des exceptions

1111 Gestion des exceptions. 11-2 Objectifs À la fin de ce cours, vous serez capables de : • Expliquer les concepts de base de la gestion des exceptions

Embed Size (px)

Citation preview

Page 1: 1111 Gestion des exceptions. 11-2 Objectifs À la fin de ce cours, vous serez capables de : • Expliquer les concepts de base de la gestion des exceptions

11111111

Gestion des exceptionsGestion des exceptions

Page 2: 1111 Gestion des exceptions. 11-2 Objectifs À la fin de ce cours, vous serez capables de : • Expliquer les concepts de base de la gestion 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

Page 3: 1111 Gestion des exceptions. 11-2 Objectifs À la fin de ce cours, vous serez capables de : • Expliquer les concepts de base de la gestion des 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.

Page 4: 1111 Gestion des exceptions. 11-2 Objectifs À la fin de ce cours, vous serez capables de : • Expliquer les concepts de base de la gestion des exceptions

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 ?

Page 5: 1111 Gestion des exceptions. 11-2 Objectifs À la fin de ce cours, vous serez capables de : • Expliquer les concepts de base de la gestion des exceptions

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.

Page 6: 1111 Gestion des exceptions. 11-2 Objectifs À la fin de ce cours, vous serez capables de : • Expliquer les concepts de base de la gestion des exceptions

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

Page 7: 1111 Gestion des exceptions. 11-2 Objectifs À la fin de ce cours, vous serez capables de : • Expliquer les concepts de base de la gestion des exceptions

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.

Page 8: 1111 Gestion des exceptions. 11-2 Objectifs À la fin de ce cours, vous serez capables de : • Expliquer les concepts de base de la gestion des exceptions

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

Page 9: 1111 Gestion des exceptions. 11-2 Objectifs À la fin de ce cours, vous serez capables de : • Expliquer les concepts de base de la gestion des exceptions

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.

Page 10: 1111 Gestion des exceptions. 11-2 Objectifs À la fin de ce cours, vous serez capables de : • Expliquer les concepts de base de la gestion des exceptions

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

}

Page 11: 1111 Gestion des exceptions. 11-2 Objectifs À la fin de ce cours, vous serez capables de : • Expliquer les concepts de base de la gestion des exceptions

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

Page 12: 1111 Gestion des exceptions. 11-2 Objectifs À la fin de ce cours, vous serez capables de : • Expliquer les concepts de base de la gestion des exceptions

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);

}

Page 13: 1111 Gestion des exceptions. 11-2 Objectifs À la fin de ce cours, vous serez capables de : • Expliquer les concepts de base de la gestion des exceptions

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();

}

Page 14: 1111 Gestion des exceptions. 11-2 Objectifs À la fin de ce cours, vous serez capables de : • Expliquer les concepts de base de la gestion des exceptions

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");

}

Page 15: 1111 Gestion des exceptions. 11-2 Objectifs À la fin de ce cours, vous serez capables de : • Expliquer les concepts de base de la gestion des exceptions

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");

}

Page 16: 1111 Gestion des exceptions. 11-2 Objectifs À la fin de ce cours, vous serez capables de : • Expliquer les concepts de base de la gestion des exceptions

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");

}

Page 17: 1111 Gestion des exceptions. 11-2 Objectifs À la fin de ce cours, vous serez capables de : • Expliquer les concepts de base de la gestion des exceptions

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();

Page 18: 1111 Gestion des exceptions. 11-2 Objectifs À la fin de ce cours, vous serez capables de : • Expliquer les concepts de base de la gestion des exceptions

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 { … }

Page 19: 1111 Gestion des exceptions. 11-2 Objectifs À la fin de ce cours, vous serez capables de : • Expliquer les concepts de base de la gestion des exceptions

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());

}

}

Page 20: 1111 Gestion des exceptions. 11-2 Objectifs À la fin de ce cours, vous serez capables de : • Expliquer les concepts de base de la gestion des exceptions

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.