Chapitre 11 Exceptions.

Slides:



Advertisements
Présentations similaires
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.
Advertisements

Master 1 SIGLIS java Lecteur Stéphane Tallard Chapitre 4 – Structures de contrôle.
Laboratoire de Bioinformatique des Génomes et des Réseaux Université Libre de Bruxelles, Belgique Introduction Statistics.
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.
CSI1502 Principes fondamentaux en conception des logiciels Chapter 8: Gestion des exceptions.
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.
Master 1 SIGLIS Java Lecteur Stéphane Tallard Les erreurs communes en Java.
12/04/ Les exceptions Cours 11 Cours 11.
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
C++ Les fonctions. Présentation Utilité : Dès qu'un programme dépasse la centaine de lignes de code, il est pratique de pouvoir le décomposer en plusieurs.
Stéphane Frénot, Frederique Laforest, Frédéric Le-Mouël IJA 1 TD 6 IJA Structures de données JAVA.
1 Doxygen. 2 Doxygen : qu’est-ce que c’est ? Code C++, Java,... ● Un générateur de documentation – pour C + +, mais aussi C, Java, Fortran,... – Il fonctionne.
Présentation python : Épisode 3 ● Comment programmer comme un gentilhomme ? ● Le style de code ou comment bien présenter ● Les test unitaires ou comment.
IP Multicast Text available on
Template Provided By Genigraphics – Replace This Text With Your Title John Smith, MD 1 ; Jane Doe, PhD 2 ; Frederick Smith, MD, PhD 1,2 1.
By Kate Soglaeva. » FormHandlers do’s » Droplets do’s » Repositories do’s 2 ATG Hints by Kate Soglaeva.
Utilisation du logiciel EduStat©
Comment corriger son code sans forcément appeler l’enseignant M2202
Modèle objet : les classes
java : l'héritage (rappel)
Environnement de développement des BD
Les Instructions Itératives (Les Boucles)
Introduction au Langage Pascal
Les Exceptions Rémi Forax
Détection des erreurs.
Chapitre 6 La gestion des Exceptions et les assertions
Master Réseaux et Systèmes Distribués (RSD) Algorithmique des systèmes
Principes de programmation (suite)
11ième Classe (Mardi, 18 novembre) CSI2572
Overview %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
IDL_IDL bridge The IDL_IDLBridge object class allows an IDL session to create and control other IDL sessions, each of which runs as a separate process.
Langages de programmation TP3
Langages de programmation TP10
Quantum Computer A New Era of Future Computing Ahmed WAFDI ??????
mardi, le douze septembre
Réalisation d’une application web sous le thème: «Mon vétérinaire » par : Benzineb Asmaa et Meftahi Oualid Présentation à Université Saad Dahlab Blida.
L ES I NSTRUCTIONS I TÉRATIVES (L ES B OUCLES ) Réalisé par : OUZEGGANE Redouane Département de Technologie Faculté de Technologie – Université A.Mira,
Puzzler.
Programmation Orientée Objet C# El Akel Bouchra ISMONTIC Tanger 2013/2014.
2 Copyright © 2004, Oracle. Tous droits réservés. Restreindre et trier les données.
Développement d’une Application CORBA
Le Java premiers pas.
Les classes et les objets
Qui est-ce? NB: This version of Guess Who has been created using copyright free images from There are versions of the game available to.
B. Liskov, Program Development in Java, chap. 4 Exceptions
Les exceptions Le mécanisme des exceptions est destiné à permettre aux fonctions profondes d'une bibliothèque de notifier la survenue d'une erreur aux.
1 Exception && Structure dynamique Exception && Structure dynamique Mohammed OUANAN.
Schéma de conception Factory Method Exemple
WRITING A PROS AND CONS ESSAY. Instructions 1. Begin your essay by introducing your topic Explaining that you are exploring the advantages and disadvantages.
Programmation par Objets et Java
POWERPOINT PRESENTATION FOR INTRODUCTION TO THE USE OF SPSS SOFTWARE FOR STATISTICAL ANALISYS BY AMINOU Faozyath UIL/PG2018/1866 JANUARY 2019.
Opérateurs et fonctions arithmétiques Opérateurs de relation Opérateurs logiques Cours 02.
Chapitre 9 L’Héritage.
Chapitres 5 et 6 Les instructions de contrôle (I et II)
Chapitre 7 Conception Orientée Objet
Principes de programmation (suite)
Chapitre 10 Polymorphisme
Ordonnancement des processus sous Windows NT
STREAMS (et fichiers).
Lecture/Écriture de fichiers (I/O)
Variables et accès en Java
Chapter 11: Récursivité Java Software Solutions Second Edition
Journée 2ème: introduction
TP N°1 : GUI en NetBeans Module R & C Université de Jijel
TP N°6: Construction d’un Serveur Multi-Client
TP N°4 Développement d’ une application
TP RC.
TP N°5: Partie I Programme Serveur.
Transcription de la présentation:

Chapitre 11 Exceptions

Sommaire Introduction Gestion d’exception Bloc try-catch Hiérarchie des classes d’exception I/O exception INF 1002 - Introduction à la programmation objet (Automne 2017) - M. Badri

Introduction Une exception est un objet décrivant une situation erronée ou inhabituelle Comme situation erronée, on peut citer par exemple: des données incorrectes ou fin de fichier prématurée Ces situations peuvent arriver à n’importe quel moment de l’exécution du programme. Le développeur, en plus de sa tâche principale, peut examiner toutes les situations et prendre des décisions Il peut également en oublier, ce qui rend la tâche difficile et le code complexe et illisible Pour y remédier, Java dispose d’un mécanisme appelé gestion d’exception Les exceptions sont déclenchées par une partie du programme et peuvent être traitée par une autre partie du programme Ainsi, le programme peut comporter deux types de flots : flot d’exécution normal et flot exécution d’exception INF 1002 - Introduction à la programmation objet (Automne 2017) - M. Badri

Gestion d’exception L’API Java dispose d’un ensemble prédéfini d’exceptions pouvant survenir durant l’exécution d’un programme Face aux exceptions, le programme peut: L’ignorer – dans ce cas, le programme prend fin et affiche un message La gérer la où elle a lieu La gérer dans une autre section du programme INF 1002 - Introduction à la programmation objet (Automne 2017) - M. Badri

//******************************************************************** // Zero.java Author: Lewis/Loftus // // Demonstrates an uncaught exception. 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."); } Copyright © 2017 Pearson Education, Inc. INF 1002 - Introduction à la programmation objet (Automne 2017) - M. Badri

Output (when program terminates) Exception in thread "main" java.lang.ArithmeticException: / by zero at Zero.main(Zero.java:17) //******************************************************************** // Zero.java Author: Lewis/Loftus // // Demonstrates an uncaught exception. 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."); } Copyright © 2017 Pearson Education, Inc. INF 1002 - Introduction à la programmation objet (Automne 2017) - M. Badri

Bloc try-catch Pour gérer les exceptions, il faut inclure dans le bloc try les instructions susceptibles de déclencher une exception Ce bloc est suivi par la définition de un ou plusieurs gestionnaires d’exception Chaque définition de gestionnaire est précédée par le mot clé catch Chaque gestionnaire est associé à un type d’exception Lorsqu’une exception a lieu au sein d’un bloc try, le contrôle passe directement au premier catch qui correspond au type de l’exception – branchement inconditionnel au gestionnaire L’exécution se poursuit alors avec les instructions suivant ce gestionnaire Try { //instructions} Catch (..) { …….} INF 1002 - Introduction à la programmation objet (Automne 2017) - M. Badri

Bloc try-catch - finally Le bloc finally vient à la suite du bloc try Les instructions faisant partie du bloc finally sont toujours exécutées Ces instructions seront exécutées soit : après la fin naturelle du bloc try ou bien, après le gestionnaire d’exception (à condition que ce dernier n’ait pas provoqué l’arrêt du programme) INF 1002 - Introduction à la programmation objet (Automne 2017) - M. Badri

Bloc try-catch – Cheminement d’exception Pour des raisons appropriées, il arrive que dans certains cas une exception ne soit pas gérée là où elle est déclenchée On parle de cheminement d’exception, c.à.d qu’une exception peut remonter d’une méthode à une autre – voir exemple INF 1002 - Introduction à la programmation objet (Automne 2017) - M. Badri

//******************************************************************** // Propagation.java Author: Lewis/Loftus // // Demonstrates exception propagation. public class Propagation { //----------------------------------------------------------------- // Invokes the level1 method to begin the exception demonstration. static public void main(String[] args) ExceptionScope demo = new ExceptionScope(); System.out.println("Program beginning."); demo.level1(); System.out.println("Program ending."); } Copyright © 2017 Pearson Education, Inc. INF 1002 - Introduction à la programmation objet (Automne 2017) - M. Badri

//******************************************************************** // Propagation.java Author: Lewis/Loftus // // Demonstrates exception propagation. public class Propagation { //----------------------------------------------------------------- // Invokes the level1 method to begin the exception demonstration. static public void main(String[] args) ExceptionScope demo = new ExceptionScope(); System.out.println("Program beginning."); demo.level1(); System.out.println("Program ending."); } Copyright © 2017 Pearson Education, Inc. INF 1002 - Introduction à la programmation objet (Automne 2017) - M. Badri

Output Program beginning. Level 1 beginning. Level 2 beginning. The exception message is: / by zero 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. Copyright © 2017 Pearson Education, Inc. INF 1002 - Introduction à la programmation objet (Automne 2017) - M. Badri

//******************************************************************** // ExceptionScope.java Author: Lewis/Loftus // // Demonstrates exception propagation. 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()); continue Copyright © 2017 Pearson Education, Inc. INF 1002 - Introduction à la programmation objet (Automne 2017) - M. Badri

System.out.println("The call stack trace:"); continue System.out.println("The call stack trace:"); problem.printStackTrace(); System.out.println(); } System.out.println("Level 1 ending."); //----------------------------------------------------------------- // Serves as an intermediate level. The exception propagates // through this method back to level1. public void level2() { System.out.println("Level 2 beginning."); level3(); System.out.println("Level 2 ending."); Copyright © 2017 Pearson Education, Inc. INF 1002 - Introduction à la programmation objet (Automne 2017) - M. Badri

Hiérarchie des classes d’exception L’API Java dispose d’une hiérarchie de classes d’exception Toutes les classes d’erreur et classes d’exception sont des descendants de la classe Throwable Pour définir une exception, il faut étendre (extends) la classe d’Exception ou l’un de ses descendants en fonction de l’usage de l’exception en question INF 1002 - Introduction à la programmation objet (Automne 2017) - M. Badri

The Exception Class Hierarchy Copyright © 2017 Pearson Education, Inc. INF 1002 - Introduction à la programmation objet (Automne 2017) - M. Badri

//******************************************************************** // CreatingExceptions.java Author: Lewis/Loftus // // Demonstrates the ability to define an exception via inheritance. import java.util.Scanner; 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; Scanner scan = new Scanner(System.in); OutOfRangeException problem = new OutOfRangeException("Input value is out of range."); continue Copyright © 2017 Pearson Education, Inc. INF 1002 - Introduction à la programmation objet (Automne 2017) - M. Badri

System.out.print("Enter an integer value between " + MIN + continue System.out.print("Enter an integer value between " + MIN + " and " + MAX + ", inclusive: "); int value = scan.nextInt(); // Determine if the exception should be thrown if (value < MIN || value > MAX) throw problem; System.out.println("End of main method."); // may never reach } Copyright © 2017 Pearson Education, Inc. INF 1002 - Introduction à la programmation objet (Automne 2017) - M. Badri

Sample Run Enter an integer value between 25 and 40, inclusive: 69 Exception in thread "main" OutOfRangeException: Input value is out of range. at CreatingExceptions.main(CreatingExceptions.java:20) continue System.out.print("Enter an integer value between " + MIN + " and " + MAX + ", inclusive: "); int value = scan.nextInt(); // Determine if the exception should be thrown if (value < MIN || value > MAX) throw problem; System.out.println("End of main method."); // may never reach } Copyright © 2017 Pearson Education, Inc. INF 1002 - Introduction à la programmation objet (Automne 2017) - M. Badri

//******************************************************************** // OutOfRangeException.java Author: Lewis/Loftus // // Represents an exceptional condition in which a value is out of // some particular range. public class OutOfRangeException extends Exception { //----------------------------------------------------------------- // Sets up the exception object with a particular message. OutOfRangeException(String message) super(message); } Copyright © 2017 Pearson Education, Inc. INF 1002 - Introduction à la programmation objet (Automne 2017) - M. Badri

Hiérarchie des classes d’exception Une exception peut être contrôlée ou non Une exception contrôlée doit être déclenchée à l’aide de la clause throws associée à la méthode qui la déclenche ou qui la propage La clause throws apparait au niveau de l’entête de la méthode A cette clause, on associe un objet dont le type servira à identifier l’exception concernée Le compilateur générera une erreur si l’exception contrôlée n’est pas captée ou listée dans la clause Throws Les exceptions non contrôlées ne nécessitent pas de gestion explicite - ex: Les objets de type RuntimeException et descendants INF 1002 - Introduction à la programmation objet (Automne 2017) - M. Badri

I/O exception Plusieurs opérations d’entrée/sortie peuvent déclencher des exceptions du types IOException – lecture à partir d’un fichier non existant La classe IOException est une super-classe dont dérivent plusieurs sous classes représentant les problèmes pouvant survenir lors des opérations d’E/S INF 1002 - Introduction à la programmation objet (Automne 2017) - M. Badri

//******************************************************************** // TestData.java Author: Lewis/Loftus // // Demonstrates I/O exceptions and the use of a character file // output stream. import java.util.Random; import java.io.*; public class TestData { //----------------------------------------------------------------- // Creates a file of test data that consists of ten lines each // containing ten integer values in the range 10 to 99. public static void main(String[] args) throws IOException final int MAX = 10; int value; String fileName = "test.txt"; PrintWriter outFile = new PrintWriter(fileName); continue Copyright © 2017 Pearson Education, Inc. INF 1002 - Introduction à la programmation objet (Automne 2017) - M. Badri

Random rand = new Random(); for (int line = 1; line <= MAX; line++) continue Random rand = new Random(); for (int line = 1; line <= MAX; line++) { for (int num = 1; num <= MAX; num++) value = rand.nextInt(90) + 10; outFile.print(value + " "); } outFile.println(); outFile.close(); System.out.println("Output file has been created: " + fileName); Copyright © 2017 Pearson Education, Inc. INF 1002 - Introduction à la programmation objet (Automne 2017) - M. Badri

Random rand = new Random(); for (int line = 1; line <= MAX; line++) continue Random rand = new Random(); for (int line = 1; line <= MAX; line++) { for (int num = 1; num <= MAX; num++) value = rand.nextInt(90) + 10; outFile.print(value + " "); } outFile.println(); outFile.close(); System.out.println("Output file has been created: " + fileName); Copyright © 2017 Pearson Education, Inc. INF 1002 - Introduction à la programmation objet (Automne 2017) - M. Badri

Output Sample test.txt File Output file has been created: test.txt 77 46 24 67 45 37 32 40 39 10 90 91 71 64 82 80 68 18 83 89 25 80 45 75 74 40 15 90 79 59 44 43 95 85 93 61 15 20 52 86 60 85 18 73 56 41 35 67 21 42 93 25 89 47 13 27 51 94 76 13 33 25 48 42 27 24 88 18 32 17 71 10 90 88 60 19 89 54 21 92 45 26 47 68 55 98 34 38 98 38 48 59 90 12 86 36 11 65 41 62 Copyright © 2017 Pearson Education, Inc. INF 1002 - Introduction à la programmation objet (Automne 2017) - M. Badri