1 COURS DE PROGRAMMATION ORIENTEE OBJET : Exceptions.

Slides:



Advertisements
Présentations similaires
La programmation orientée objet avec Java L3-MIAGE Plan
Advertisements

Formation universitaire à .NET: Introduction à C#
Le mécanisme des exceptions
La classe String Attention ce n’est pas un type de base. Il s'agit d'une classe défini dans l’API Java (Dans le package java.lang) String s="aaa"; // s.
Des exceptions Définition signal lancé par une instruction ou un bloc dinstructions pouvant être rattrapé analysé par une autre instruction, ou un autre.
gestion des exceptions
TP 7.1 synchronized et join Écrire un programme Java qui crée 1000 threads et maintient un compteur nb du nombre de threads créés jusque-là. Le thread.
C.
Programmer en JAVA par Tama
TD 1 IJA Introduction Objet, méthode, attribut Classe, instance
1 Le mécanisme des exceptions Qu'est-ce qu'une exception? Comment définir et signaler des exceptions? Comment récupérer des exceptions?
Traitement des erreurs en Java
Javascript les spécificités du langage - Partie 7 -
Principes de programmation (suite)
Introduction à la programmation (420-PK2-SL) cours 12 Gestion des applications Technologie de linformation (LEA.BW)
Les méthodes en java Une méthode est un regroupement d’instructions ayant pour but de faire un traitement bien précis. Une méthode pour être utilisée.
Concepts de base : la Classe Pour faire une comparaison simple, une classe serait a priori, une structure C avec des variables et des fonctions.
COURS DE PROGRAMMATION ORIENTEE OBJET :
Les exceptions. Quest ce quune exception ? Une erreur dans le programme Due à un bug ou un cas « anormal » Gestion complète en java : JVM Dans dautre.
Chapitre VII Généricité. POO-L3 H. Fauconnier2 Chapitre VII 1. Principes généraux 2. Types génériques imbriqués 3. Méthodes génériques 4. Types paramètres.
Introduction au paradigme objet Concepts importants surcharge (overload) redéfinition (override) Définition d’une classe Définition des attributs.
Java : Héritage & Exceptions
77 Utilisation des classes (suite). 7-2 Objectifs A la fin de ce cours, vous serez capables de : Définir des méthodes surchargées dans une classe Fournir.
Master 1 SIGLIS Java Lecteur Stéphane Tallard Chapitre 5 – Héritage, Interfaces et Listes génériques.
Rappels sur la Programmation java
Page de garde C++ Les exceptions Maîtrise dinformatique Février 2002.
Test et débogage Tests unitaires. Gestion d’erreurs. Notion d’état, de pré-condition et de post-condition. Assertion. Traces de programme. Débogueur et.
Structures de données IFT Abder Alikacem Gestion des exceptions Département dinformatique et de génie logiciel Édition Septembre 2009.
66 Utilisation des classes et des objets. 6-2 Objectifs A la fin de ce cours, vous serez capables de : Créer de nouvelles classes à laide de Eclipse Utiliser.
Présentation Structures de Données et TDA
Gestion et levée dexception. Une exception est un message envoyé par une méthode à une autre méthode. La méthode qui la reçoit a le choix de soccuper.
Chapitre XI Gestion des erreurs et exceptions. 2 La gestion des erreurs et exceptions De nombreux problèmes peuvent survenir pendant lexécution dun programme:
PROGRAMMATION MULTI-TÂCHES (MULTITHREADING)
1 IFT 6800 Atelier en Technologies dinformation Le langage de programmation Java chapitre 3 : Classes et Objects.
Cours 8 (18 novembre 2011) exceptions. héritagePOO-L3 H. Fauconnier2 Tableau et héritage Y[] yA=new Y[3]; X[] xA=yA; //ok xA[0]=new Y(); xA[1]=new X();
COURS DE PROGRAMMATION ORIENTEE OBJET :
COURS DE PROGRAMMATION ORIENTEE OBJET :
Héritage Lhéritage permet de spécialiser une classe en définissant une relation de type « est une sorte de ». #include comptebancaire.h class CompteEpargne.
CSI 1502 Principes fondamentaux de conception de logiciels
Leçon 1 : notion dobjet IUP Génie Informatique Besançon Méthode et Outils pour la Programmation Françoise Greffier Université de Franche-Comté.
Programme de baccalauréat en informatique Programmation Orientée Objets IFT Thierry EUDE Module 6. Gestion des erreurs et des exceptions : Fonctionnement.
99 Réutilisation du code grâce à l'héritage. 9-2 Objectifs À la fin de ce cours, vous serez capables de : Définir l'héritage Utiliser l'héritage pour.
Les méthodes en java • Une méthode est un regroupement d’instructions ayant pour but de faire un traitement bien précis. • Une méthode pour être utilisée.
1111 Gestion des exceptions Objectifs À la fin de ce cours, vous serez capables de : • Expliquer les concepts de base de la gestion des exceptions.
Exceptions B. Liskov, Program Development in Java, chap. 4 Exceptions.
Cours 9 Exceptions (fin) Généricité. POO-L3 H. Fauconnier2 Chaînage d'exceptions  Une exception peut être causée par une autre.  il peut être utile.
GESTION ET TRAITEMENT DES ERREURS
Java : Exceptions H Batatia. 5/03/2004Java12: H.Batatia2 Exemple 1 public class Bonjour { public static void main(String[] args) { System.out.println("Bonjour.
Master 1 SIGLIS Java Lecteur Stéphane Tallard Chapitre 6 – Exceptions.
Master 1 SIGLIS Java Lecteur Stéphane Tallard Les erreurs communes en Java.
Tutorat en bio-informatique
12/04/ Les exceptions Cours 11 Cours 11.
Entrées / Sorties.
Programmation Système et Réseau
Les sockets.
Schéma de conception Factory Method Exemple Sylvain Giroux.
Cours du 5 novembre.
Cours 4 (14 octobre) Héritage. Chapitre III Héritage.
6ième Classe (Mercredi, 17 novembre) CSI2572
Héritage Conception par Objet et programmation Java
Master 1 SIGLIS Java Lecteur Stéphane Tallard Chapitre 2 – Java Premiers pas Master 1 SIGLIS1 Java Lecteur - Chapitre 2 - Java Premiers Pas.
Traitement des erreurs en Java: les exceptions
1 Complément JAVA les assertions. 2 lan Tests et erreurs Assertions en Java Utilisation Bonne pratique des assertions.
1 Cpt JAVA : Eclipse (bis) Debogage. 2 Code à tester public class siecle { int t; public siecle() { super(); t=1; } static public boolean vrai() { return(false);
Langage et Concepts de Programmation Orientée-Objet Pôle Informatique 2007/2008 École Nationale Supérieure des Mines de Saint-Étienne Laurent Vercouter.
Structures de données IFT-2000 Abder Alikacem Gestion des exceptions Édition Septembre 2009 Département d’informatique et de génie logiciel Département.
Exception Handling "Unfortunately, it's almost accepted practice to ignore error conditions, as if we're in a state of denial about errors." Bruce Eckel.
Philippe Gandy - 15 septembre 2015 Basé sur les notes de cours de Daniel Morin et Roch Leclerc.
Java Réalisé par: Mouna POKORA. PLAN: Définition : Historique: Caractéristiques: un langage orienté objet: un langage interprété : un langage portable:
Transcription de la présentation:

1 COURS DE PROGRAMMATION ORIENTEE OBJET : Exceptions

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  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  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  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  Classement des exceptions Throwable ErrorException IOException RuntimeException LES EXCEPTIONS

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  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  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  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  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  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  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  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  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  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  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  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  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  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  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  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 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  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  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  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  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  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  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 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  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 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  Exécution du code utilisateur1> java ExceptionRecup java.sql.SQLException bonjour LES EXCEPTIONS