La présentation est en train de télécharger. S'il vous plaît, attendez

La présentation est en train de télécharger. S'il vous plaît, attendez

1 COURS DE PROGRAMMATION ORIENTEE OBJET : Exceptions.

Présentations similaires


Présentation au sujet: "1 COURS DE PROGRAMMATION ORIENTEE OBJET : Exceptions."— Transcription de la présentation:

1 1 COURS DE PROGRAMMATION ORIENTEE OBJET : Exceptions

2 2 LES EXCEPTIONS  Traitement des exceptions –Une exception est une erreur qui survient à l’exécution d’un programme Java. –Java utilise un mécanisme d’interception des erreurs appelé traitement des exceptions.

3 3  Traitement des exceptions –Quand une erreur survient dans une méthode: La méthode se termine immédiatement –Elle ne renvoie pas la valeur attendue –Elle ne renvoie aucune valeur. Le contrôle est donné à des blocs de programmes spécifiques, les gestionnaires d’exceptions où elle est capturée et traitée. LES EXCEPTIONS

4 4  Que devrait faire un programme en cas d’erreur? –Envoyer un message. –Sauvegarder l’ensemble du travail en cours et permettre une sortie correcte du programme. –Revenir à un état défini et donner à l’utilisateur la possibilité d’exécuter d’autres commandes. LES EXCEPTIONS

5 5  Exemples de causes d’erreurs –Les erreurs dues à l’utilisateur qui ne respecte pas les règles métiers de l’application –Les erreurs techniques :connexion réseau défaillante, tentative de modification d’une clé primaire dans une base de données, imprimante déconnectée ou manquant de papier. –Les contraintes physique: disque plein. –Les erreurs de programmation : index d’un tableau invalide, emploi d’une référence à un objet non initialisé. LES EXCEPTIONS

6 6  Classement des exceptions Throwable ErrorException IOException RuntimeException LES EXCEPTIONS

7 7  La hiérarchie Error –Décrit les erreurs internes ou le manque de ressources dans le système d’exécution de Java. –On ne se préoccupe pas de ce type d’exception. –Une telle exception provoque généralement un message et l’arrêt du programme. LES EXCEPTIONS

8 8  La hiérarchie Exception Séparation en deux branches: –Les exceptions dérivant de RuntimeException : elles sont dues à une erreur de programmation. –Les autres : elles ont une cause externe au programme. LES EXCEPTIONS

9 9  La hiérarchie RuntimeException –Exemples de classes dérivant de RuntimeException : ArithmeticException IllegalArgumentException IndexOutOfBoundsException NullPointerException –On peut toujours éviter une exception de ce type. LES EXCEPTIONS

10 10  Deux catégories d’exceptions Le compilateur contrôle que l’on apporte des gestionnaires d’exceptions pour toutes les exceptions sous contrôle. Exceptions hors contrôle Exceptions dérivant de la classe Error et de la classe RuntimeException. Exceptions sous contrôle Les autres exceptions. LES EXCEPTIONS

11 11  Trois types d’opérations possibles OpérationSensInstruction Java Gérer L’exception est interceptée par le programme qui peut réaliser un traitement particulier puis reprendre son cours normal. try…catch(Exception …) Relever L’exception est interceptée par une méthode qui interrompt le flot normal de son exécution et renvoie l’exception à la méthode appelante. throws Lever Une méthode peut lever une exception pour indiquer à la méthode appelante qu’elle a demandé à réaliser une opération illégale. throw LES EXCEPTIONS

12 12  Signaler les exceptions avec la clause THROWS –Une méthode doit indiquer au compilateur les valeurs qu’elle renvoie mais aussi signaler les anomalies possibles. –Quand on crée une méthode, on ne doit signaler que les exceptions sous contrôle. LES EXCEPTIONS

13 13  Signaler les exceptions avec la clause THROWS Deux situations amènent une méthode à signaler un type d’exception dans la clause throws : Soit la méthode appelle une méthode qui peut lancer une exception sous contrôle: –Soit la méthode gére l’exception : instruction try/catch –Soit la méthode ne gère pas l’exception et la relève : clause throws. Soit on lève une exception sous contrôle dans le code avec l’instruction throw. Le type doit être signalé dans l’entête de la méthode avec la clause throws. LES EXCEPTIONS

14 14  Signaler les exceptions avec la clause THROWS Exemples de méthodes de l’API Java : –Un des constructeurs de la classe Scanner qui prend en paramètre un ficher: public Scanner(File source) throws FileNotFoundExceptionFile FileNotFoundException où FileNotFoundException dérive de IOException. FileNotFoundException –La méthode de l’interface Comparable int CompareTo(T o) throws ClassCastException où ClassCastException dérive de RuntimeException. LES EXCEPTIONS

15 15  Créer ses propres exceptions –créer sa propre classe d’exception pour imposer à l’utilisateur d’une classe de prendre en compte des opérations illégales –Il faut créer une nouvelle classe dérivant d’ Exception et implémenter les quatre constructeurs de sa superclasse, permettant de créer une exception sans paramètres, avec un message, avec un message et l’exception d’origine ou juste avec l’exception d’origine dans le cas où une méthode intercepterait une exception et la transforme en une autre exception. LES EXCEPTIONS

16 16  Créer ses propres exceptions Constructor Summary ExceptionException() Constructs a new exception with null as its detail message. ExceptionException(String message) Constructs a new exception with the specified detail message.String ExceptionException(String message, Throwable cause) Constructs a new exception with the specified detail message and cause.StringThrowable ExceptionException(Throwable cause) Constructs a new exception with the specified cause and a detail message of (cause==null ? null : cause.toString()) (which typically contains the class and detail message of cause).Throwable LES EXCEPTIONS

17 17  Créer ses propres exceptions –Exemple : Un client possédant un compte d’épargne demande un débit alors que son solde est insuffisant. La méthode debiter de la classe CompteEpargne est appelée avec un montant qui est supérieur au solde. LES EXCEPTIONS

18 18  Créer ses propres exceptions –Trois solutions envisagées : 1 – Afficher un message Classe CompteEpargne public void debiter ( int montant ) { if ( montant <= getSolde ()) super.debiter ( montant ); else System.out.println ( " Débit non autorisé "); } LES EXCEPTIONS

19 19  Créer ses propres exceptions –Trois solutions envisagées : 1 - Technique à proscrire car la méthode transmet une simple information mais ne permet pas de contrôler la suite de l’exécution de la méthode appelante. Risque que le programme continu dans un état imprévu. Exemple : la méthode appelante prévoyait de débiter le compte d’épargne afin de créditer un autre compte. Si le débit ne se fait pas, le crédit ne doit pas se faire. LES EXCEPTIONS

20 20  Créer ses propres exceptions –Trois solutions envisagées : 2 - Changer la signature de la méthode : Classe CompteBancaire public boolean debiter ( int montant ) { solde = solde - montant; return true; } Classe CompteEpargne public boolean debiter ( int montant ) { if ( montant <= getSolde ()) return(super.debiter ( montant )); return false; } LES EXCEPTIONS

21 21  Créer ses propres exceptions –Trois solutions envisagées : 2 - Technique à proscrire car rien n’impose à la méthode appelante de tester le booléen. Le développeur peut oublier le cas d’un débit non autorisé. Risque d’introduction d’une erreur. LES EXCEPTIONS

22 22  Créer ses propres exceptions –Trois solutions envisagées : 3 – Création d’une classe DebitImpossibleException Classe CompteEpargne public void debiter(int montant) throws DebitImpossibleException{ if ( montant <= getSolde ()) super.debiter ( montant ); else throw new DebitImpossibleException("Débit non autorisé : solde <montant"); } LES EXCEPTIONS

23 23 public class DebitImpossibleException extends Exception { public DebitImpossibleException() { } public DebitImpossibleException(String message) { super(message); } public DebitImpossibleException(Throwable cause) { super(cause); } public DebitImpossibleException(String message, Throwable cause) { super(message, cause); } } //classe générée automatiquement par Eclipse LES EXCEPTIONS

24 24  Gérer une exception avec l’instruction try-catch-finally –Après l’instruction try doit figurer au moins une instruction catch ou bien l’instruction finally. –Toute instruction situé dans l’instruction finally sera à coup sûr exécutée, qu’une exception ait été interceptée ou pas. Permet de désallouer des ressources locales: Mettre fin aux connexions à une base de données. Libérer les ressources occupées par un objet Graphics. LES EXCEPTIONS

25 25  Gérer une exception avec l’instruction try-catch-finally try{ code susceptible de lever une exception } catch(ExceptionType1 e1){... //code de traitement de l'exception de type ExceptionType1 } catch(ExceptionType2 e2){... // code de traitement de l'exception de type ExceptionType2 } (...) // (autant de "catch" que de types d'exception levables) finally{... // code pour nettoyer le contexte si nécessaire } LES EXCEPTIONS

26 26  Gérer l’exception DebitImpossibleException public class Test0Transfert { public static void main(String[] args) throws DebitImpossibleException { CompteBancaire c1 = new CompteEpargne("Dupont", "rue...", 0.5); CompteBancaire c2 = new CompteCourant("Dupont", "rue...", 0.3); c1.crediter(100); //transférer 1000 euros de c1 vers c2 c1.debiter(1000); c2.crediter(1000); System.out.println(c1); System.out.println(c2); }} LES EXCEPTIONS

27 27  Gérer l’exception DebitImpossibleException public class Test1Transfert { public static void main(String[] args){ CompteBancaire c1 = new CompteEpargne("Dupont", "rue...", 0.5); CompteBancaire c2 = new CompteCourant("Dupont", "rue...", 0.3); c1.crediter(100); LES EXCEPTIONS

28 28  Gérer l’exception DebitImpossibleException //transférer 1000 euros de c1 vers c2 try{ c1.debiter(1000); c2.crediter(1000); } catch (DebitImpossibleException e) { System.out.println("echec du transfert de c1 vers c2"); } System.out.println(c1); System.out.println(c2); } LES EXCEPTIONS

29 29  Exemple Une exception qui est levée va remonter la hiérarchie des méthodes appelantes qui la signalent avec une clause throws soit jusqu’à trouver une méthode qui la gère soit jusqu’à provoquer une erreur. LES EXCEPTIONS

30 30 import java.lang.Exception.*; public class ExceptionNonRecup { public void m3() throws java.sql.SQLException{ throw new java.sql.SQLException(); } public void m2() throws java.sql.SQLException{ this.m3(); } public void m1() throws java.sql.SQLException{ this.m2(); } public static void main(String[] args) throws java.sql.SQLException{ ExceptionNonRecup excep = new ExceptionNonRecup(); excep.m1(); System.out.println(" bonjour "); } LES EXCEPTIONS

31 31  Exécution du code utilisateur1> java ExceptionNonRecup Exception in thread "main" java.sql.SQLException atExceptionNonRecup.m3(ExceptionNonRecup.java:22) at ExceptionNonRecup.m2(ExceptionNonRecup.java:25) at ExceptionNonRecup.m1(ExceptionNonRecup.java:28) at ExceptionNonRecup.main(ExceptionNonRecup.java:32) LES EXCEPTIONS

32 32 import java.lang.Exception.*; public class ExceptionRecup { public void m3() throws java.sql.SQLException{ throw new java.sql.SQLException(); } public void m2() throws java.sql.SQLException{ this.m3(); } public void m1() throws java.sql.SQLException{ this.m2(); } public static void main(String[] args) { ExceptionRecup excep = new ExceptionRecup(); try { excep.m1(); }catch (SQLException e) { System.out.println(e);} System.out.println(" bonjour ");} } LES EXCEPTIONS

33 33  Exécution du code utilisateur1> java ExceptionRecup java.sql.SQLException bonjour LES EXCEPTIONS


Télécharger ppt "1 COURS DE PROGRAMMATION ORIENTEE OBJET : Exceptions."

Présentations similaires


Annonces Google