CSI1502 Principes fondamentaux en conception des logiciels Chapter 8: Gestion des exceptions.

Slides:



Advertisements
Présentations similaires
Fractions impropres et nombres fractionnaires
Advertisements

Décomposer un nombre en employant les exposants à la base 10.
PHP5 its a kind of magic. Chargement automatique function __autoload( $nom_classe ) { require_once('obj/'.$nom_classe.'.class.php'); } si on exécute le.
DOM Document Object Model. Généralités Standard du W3C Parseur XML – Génération dun arbre dobjet – Construction totale de larbre DOM est spécifié en IDL.
SAX Simple API for XML. Généralités API non standard développé par les membres du forum XML-DEV Parseur XML – Orienté événement – Parsing dynamique SAX.
Le mécanisme des exceptions
Séparation des préoccupations (c) 2004, Audrey Occello, LF8 MOC Seconde partie Un exemple de programmation orientée Aspect avec AspectJ.
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.
Introduction à Java - les exceptions -
Plan du cours 5:Threads introduction Définition Création des Threads
LICENCE MIAGE Introduction Programmation Orientée Objet JAVA philippe
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?
JDBC: manipuler une base de données en Java IFT6800 – E 2007 Jian-Yun Nie.
Chapitre IV Object, interfaces, classes imbriquées.
Traitement des erreurs en Java
Français I Leçon 2B Une semaine au lycée Au Debut #7 (for the dates of November 5 and 6) Please Translate the Following: 1. I love the math course. (Adorer.
Second part Album Keet.
BlueJ_XI 1 Java, les objets : tout de suite ! Gestion des erreurs : les exceptions Notes de cours associées au chapitre 11 tutorial BlueJ
Introduction à la programmation (420-PK2-SL) cours 12 Gestion des applications Technologie de linformation (LEA.BW)
CYCLE 3 : Alternatives Faire des choix dans un programme en C 1- AIGUILLAGE SIMPLE sur CONDITION : if-else 2-AIGUILLAGE MULTIPLE sur CONDITIONS if-else.
44 Contrôle du déroulement du programme. 4-2 Objectifs A la fin de ce cours, vous serez capables de : Utiliser les constructions de prise de décision.
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.
Faculté I&C, Claude Petitpierre, André Maurer 1 Java.
© 2007 P. Van Roy. All rights reserved. 1 FSAB1402: Informatique 2 La Concurrence Déclarative Peter Van Roy Département dIngénierie Informatique, UCL
Mise en œuvre du langage MDX - 1 ère partie- Présentation de lexemple et des outils utilisés -1-
Cours du 19 octobre. POO-L3 H. Fauconnier2 E) Constructeurs et héritage Le constructeurs ne sont pas des méthodes comme les autres: le redéfinition na.
Badr Benmammar Programmation concurrente et temps réel en Java Badr Benmammar
Magnets fiche projet / project sheet IAFACTORY THE MAGNETIC FACTORY magnets. IAFACTORY | conseil en architecture de linformation | |
Master 1 SIGLIS java Lecteur Stéphane Tallard Chapitre 4 – Structures de contrôle.
Job Interview. Francais 3 Regulier (1 Oral Formative Assessment, 1 Written Formative Assessment, 1 Vocab Quiz Formative Assessment.
Classes abstraites et Interfaces
F Copyright © Oracle Corporation, Tous droits réservés. Créer des programmes avec Procedure Builder.
Le patron de conception « Strategy » Simon Durocher ( )
Programmation par Objets et Java
5.1 URDL22005 Systèmes dexploitation Threads Vue dEnsemble Modèles de Multithreading Problèmes des Threads Pthreads Threads Windows XP Threads Linux Threads.
Laboratoire de Bioinformatique des Génomes et des Réseaux Université Libre de Bruxelles, Belgique Introduction Statistics.
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.
JUnit Présentation complète de JUnit et « guide d’utilisation » en 13 transparents.
IFT313 Introduction aux langages formels Froduald Kabanza Département dinformatique Université de Sherbrooke JavaCC.
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.
Programmation concurrente
Database Management Systems 3ed, R. Ramakrishnan and J. Gehrke1 SQL: Contraintes et Triggers Chapitre 5,
Faculté I&C, Claude Petitpierre, André Maurer 1 Concepts dhéritage Héritage dimplémentation hasA Héritage de spécialisation isA.
Multi-Thread Jian-Yun Nie
IFT 6800 Atelier en Technologies d’information
1 IFT 6800 Atelier en Technologies dinformation Le langage de programmation Java chapitre 3 : Classes et Objects.
Exceptions IFT1025: Programmation 2 Jian-Yun Nie.
Badr Benmammar Programmation concurrente et temps réel en Java Badr Benmammar
Cours 11 Threads. Chapitre X threads threadPOO-L3 H. Fauconnier3 Threads threads: plusieurs activités qui coexistent et partagent des données exemples:
COURS DE PROGRAMMATION ORIENTEE OBJET :
CSI1502 Introduction au génie logiciel
CSI 1502 Principes fondamentaux de conception de logiciels
CSI1502 Principes fondamentaux en conception des logiciels
CSI2520 Le langage Scheme (2) Un langage de programmation fonctionnelle.
Fabienne Boyer Laboratoire LIG (INRIA-UJF-INPG) Projet SARDES, INRIA Rhône-Alpes APACHE/VELOCITY.
Fabienne Boyer Laboratoire LIG (INRIA-UJF-INPG) Projet SARDES, INRIA Rhône-Alpes Usage.
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.
1111 Gestion des exceptions Objectifs À la fin de ce cours, vous serez capables de : • Expliquer les concepts de base de la gestion des exceptions.
Différencier: NOMBRE PREMIER vs. NOMBRE COMPOSÉ
Introduction à la programmation (420-PK2-SL) cours 20 Gestion des applications Technologie de l’information (LEA.BW)
27/02/2006L3 MIAGE - GLO ADA1 Les Paquetages Permettent d’encapsuler un groupe d’entités logiquement reliées. Comme toute unité de programme, le paquetage.
Objectifs À la fin de ce cours, vous serez capables de :
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 Les erreurs communes en Java.
12/04/ Les exceptions Cours 11 Cours 11.
Schéma de conception Factory Method Exemple Sylvain Giroux.
Cours 4 (14 octobre) Héritage. Chapitre III Héritage.
Pthread Ordonnancement. #define _MULTI_THREADED #include #ifndef _CHECK_H #define _CHECK_H /* headers used by a majority of the example program */ #include.
Traitement des erreurs en Java: les exceptions
Chapitre 11 Exceptions.
Transcription de la présentation:

CSI1502 Principes fondamentaux en conception des logiciels Chapter 8: Gestion des exceptions

2 Objectifs du cours: Gestion des exceptions Comprendre ce qui suit: Le fonctionnement de «try-catch» Propagation d`exception Créer et lancer les exceptions types de «I/O stream» Étudiez la section 8.0 pour l`examen final

3 Que sont les Exceptions? Une exception est un objet qui décrit une situation anormal ou erronée; tel que l`abus Exceptions sont lancé («thrown») par un programme, et peuvent être attrapé et utilisé par une autre partie du programme Un programme peut-être séparé en: Un flux normal d`exécution Un flux d`exception d`exécution Une error est aussi représenté dans Java comme objet mais en général représente une situation sans retour et ne devrait pas être attrapée

4 Prise en charge d`Exception en Java Java utilise une ensemble prédéfini d`exceptions et d`erreurs qui peuvent arriver durant l`exécution Un programme peut s`occuper d`une exception d`une de 3 façons: L`ignorer S`en occuper là ou elle arrive S`en occuper dans une autre place dans le programme La manière dont l`exception est traité est un aspect important de conception

5 Prise en charge d`Exception en Java Le message inclus une pile d`appel qui incluse la ligne ou l`exception à eu lieu La pile d`appel montre aussi quels sont les méthodes (et leur ordre d`invocation) qui ont crée cette situation La méthode getMessage retourne un String expliquant pourquoi l`exception à été lancé La méthode printStackTrace imprime la pile d`appel Voir Zero.java (p.449) Zero.java

6 public class Zero { // Deliberately divides by zero to produce an exception. public static void main (String[] args) { int numerator = 10; int denominator = 0; System.out.println (numerator / denominator); System.out.println ("This text will not be printed."); } } java.lang.ArithmeticException: / by zero at Zero.main(Zero.java:17) Exception in thread "main" ----jGRASP wedge2: exit code for process is jGRASP: operation complete.

7 Prise en charge d`Exception : La commande « try» Afin de s`occuper d`une exception quand elle arrive, l`on met la ligne qui lance l`exception dans un block try Un block try est suivie de un ou plus de clause catch qui s`occupent de l`exception Chaque clause catch à une type exception associé, et est dénommé une «exception handler» Quand une exception prend place, la 1ère clause catch dont le type d`exception correspond s`en occupe Voir ProductCodes.java (page xxx) ProductCodes.java

8 import cs1.Keyboard; public class ProductCodes { // Counts the number of product codes that are entered with a // zone of R and district greater than // public static void main (String[] args) { String code; char zone; int district, valid = 0, banned = 0; System.out.print ("Enter product code (XXX to quit): "); code = Keyboard.readString(); Continued…

9 ProductCodes.java while (!code.equals ("XXX")) { try { zone = code.charAt(9); district = Integer.parseInt(code.substring(3, 7)); valid++; if (zone == 'R' && district > 2000) banned++; } catch (StringIndexOutOfBoundsException exception) { System.out.println ("Improper code length: " + code); } catch (NumberFormatException exception) { System.out.println ("District is not numeric: " + code); } System.out.print ("Enter product code (XXX to quit): "); code = Keyboard.readString(); } System.out.println ("# of valid codes entered: " + valid); System.out.println ("# of banned codes entered: " + banned); }}

10 La Clause finally La commande try peut avoir une clause optionnelle suivant les clause catch, dénommé par le mot réservé finally Le code dans la clause finally sont toujours exécuté Si il n`y a pas d`exception de lancé, le code dans la clause finally est exécuté après que le code du block try ai été exécuté Si il y a eu une expection de lancée,If an exception is generated, le code dans la clause finally est exécuté après que le code de la clause catch approprié ai été exécuté

11 Propagation d`exception Une exception peut-être prise en charge à un niveau plus haut si il n`est pas approprié de s`en occuper quand elle arrive Les exceptions se propagent vers le haut dans la méthode appelant la hiérarchie jusqu`a ce que elles sont attrapée et prises en charge ou jusqu`a ce que il atteigne la méthode main Un block try qui contient un appel à la méthode dans laquelle une exception est lancé, peut attraper celle-ci Voir Propagation.java (page xxx) Propagation.java Voir ExceptionScope.java (page xxx) ExceptionScope.java

12 Propagation.java public class Propagation { // Invokes the level1 method to begin the exception demonstation. static public void main (String[] args) { ExceptionScope demo = new ExceptionScope(); System.out.println("Program beginning."); demo.level1(); System.out.println("Program ending."); } }

13 Propagation: L`imprimé The call stack trace: java.lang.ArithmeticException: / by zero at ExceptionScope.level3(ExceptionScope.java:54) at ExceptionScope.level2(ExceptionScope.java:41) at ExceptionScope.level1(ExceptionScope.java:18) at Propagation.main(Propagation.java:17) Level 1 ending. Program ending.

14 ExceptionScope.java public class ExceptionScope { // // Catches and handles the exception that is thrown in level3. // public void level1() { System.out.println("Level 1 beginning."); try { level2(); } catch (ArithmeticException problem) { System.out.println (); System.out.println ("The exception message is: " + problem.getMessage()); System.out.println (); System.out.println ("The call stack trace:"); problem.printStackTrace(); System.out.println (); } System.out.println("Level 1 ending."); }Continued..

15 ExceptionScope.java public void level2() { System.out.println("Level 2 beginning."); level3 (); System.out.println("Level 2 ending."); } // // Performs a calculation to produce an exception. It is not // caught and handled at this level. // public void level3 () { int numerator = 10, denominator = 0; System.out.println("Level 3 beginning."); int result = numerator / denominator; System.out.println("Level 3 ending."); } }

16 L`Hiérarchie de classe d`exception Figure 8.1 p.458

17 Prise en charge d`Exception : la commande throw Un programmeur peut définir une exception par extension de la classe Exception class ou l`un de ces descendants Les exceptions sont lancé en utilisant la commande thrown En général un commande throw est intégré dans un commande if qui évalue la condition pour voir si une exception devrait être lancée See CreatingExceptions.java (page xxx) CreatingExceptions.java See OutOfRangeException.java (page xxx) OutOfRangeException.java

18 CreatingExceptions.java import cs1.Keyboard; public class CreatingExceptions { // // Creates an exception object and possibly throws it. // public static void main (String[] args) throws OutOfRangeException { final int MIN = 25, MAX = 40; OutOfRangeException problem = new OutOfRangeException ("Input value is out of range."); System.out.print ("Enter an integer value between " + MIN + " and " + MAX + ", inclusive: "); int value = Keyboard.readInt(); // Determines if the exception should be thrown if (value MAX) throw problem; System.out.println ("End of main method."); // may never reach } }

19 Lancer une exception Enter an integer value between 25 and 40, inclusive: 3 OutOfRangeException: Input value is out of range. at CreatingExceptions.main(CreatingExceptions.java:18) Exception in thread "main" ----jGRASP wedge2: exit code for process is jGRASP: operation complete. Enter an integer value between 25 and 40, inclusive: 27 End of main method

20 OutOfRangeException.java public class OutOfRangeException extends Exception { // // Sets up the exception object with a particular message. // OutOfRangeException (String message) { super (message); } } L`utilisation d`une exception, une condition, une boucle est un choix important dans la conception

21 «Checked Exceptions» Une exception est soit «checked» ou «unchecked» Une checked exception doit soit être attrapée par une méthode ou doit être encapsulé dans une clause throw de n`importe quel méthode qui peut la lancer ou propager Une clause throws est rajouté à l`entête d`une méthode Le compilateur va se plaindre si une checked exception n`est pas prise en main correctement

22 «Unchecked Exceptions» Une unchecked exception n`a pas besoin d`avoir une prise en charge implicit, même si l`on peut s`en occuper de tel façon Les seuls unchecked exceptions en Java sont des objets de types RuntimeException ou les descendants de cette classe Erreurs sont similaires pour RuntimeException et les descendants de cette classe Les erreurs ne devraient pas être attrapées Les erreurs ne nécessitent pas de clause throw

23 I/O standard Il y a 3 flux I/O standards: Entrée standard – défini par System.in Sortie standard – défini par System.out Erreur standard – défini par System.err System.in représente les entrée par clavier typiquement System.out et System.err représente une fenêtre typiquement Nous utilisons System.out avec la commande println Voir p.461+ du livre

24 La classe IOException Les opérations suivantes utilisant les classes I/O peuvent lancer une IOException Un fichier que l`on veut lire ou dans lequel on veut écrire n`existe pas Même si le fichier existe, un programme ne pourrait peut-être pas le trouver Le fichiers pourrait contenir des donnés dans le mauvais format Une IOException est une checked exception

25 Chapter 8: Summary Comprendre ce qui suit: Le fonctionnement de «try-catch» Propagation d`exception Créer et utiliser les exceptions types de «I/O stream» Étudiez la section 8.0 pour l`examen final