Exceptions. Qu est ce qu un cas exceptionnel? Principe : détecter le maximum d erreurs à la compilation, mais... pas toujours possible



Documents pareils
Programmation Par Objets

Programmer en JAVA. par Tama

Corrigé des exercices sur les références

Chapitre 10. Les interfaces Comparable et Comparator 1

Langage et Concepts de ProgrammationOrientée-Objet 1 / 40

Une introduction à Java

Licence Bio Informatique Année Premiers pas. Exercice 1 Hello World parce qu il faut bien commencer par quelque chose...

Java 1.5 : principales nouveautés

Exceptions. 1 Entrées/sorties. Objectif. Manipuler les exceptions ;

Programmation Réseau. Sécurité Java. UFR Informatique jeudi 4 avril 13

La gestion des exceptions

Programmation par les Objets en Java

Facultés Universitaires Notre-Dame de la Paix. Conception et Programmation Orientées- Object

RAPPELS SUR LES METHODES HERITEES DE LA CLASSE RACINE Object ET LEUR SPECIALISATION (i.e. REDEFINITION)

Introduction à Java. Matthieu Herrb CNRS-LAAS. Mars

Création d un service web avec NetBeans 5.5 et SJAS 9

Support de cours et TD Programmation Orientée Objet

LMI 2. Programmation Orientée Objet POO - Cours 9. Said Jabbour. jabbour@cril.univ-artois.fr

Auto-évaluation Programmation en Java

Projet de programmation (IK3) : TP n 1 Correction

Arbres binaires de recherche

Synchro et Threads Java TM

Threads. Threads. USTL routier 1

Lambda! Rémi Forax Univ Paris-Est Marne-la-Vallée

Programmation avec des objets : Cours 7. Menu du jour

Utilisation d objets : String et ArrayList

Package Java.util Classe générique

Cours intensif Java. 1er cours: de C à Java. Enrica DUCHI LIAFA, Paris 7. Septembre Enrica.Duchi@liafa.jussieu.fr

P r ob lé m a t iq u e d e la g é n é r icit é. Pr in cip e d e la g é n é r icit é e n Ja v a ( 1 /3 )

Un ordonnanceur stupide

Présentation. Au programme. Fonctionnement. A l issue de ce module vous devriez...

Programme Compte bancaire (code)

4. Outils pour la synchronisation F. Boyer, Laboratoire Lig

Premiers Pas en Programmation Objet : les Classes et les Objets

Programmation Orientée Objet Java

Développement Logiciel

Chapitre V. Les classes : Object, Vector, etc.

Java Licence Professionnelle CISII,

Introduction : les processus. Introduction : les threads. Plan

PROGRAMMATION PAR OBJETS

Dis papa, c est quoi un bus logiciel réparti?

as Architecture des Systèmes d Information

TP1 : Initiation à Java et Eclipse

Introduction à la programmation concurrente

LOG4430 : Architecture logicielle et conception avancée

Bases du langage. Historique Applications et applets Éléments de base du langage Classes et objets Les exceptions

Cette application développée en C# va récupérer un certain nombre d informations en ligne fournies par la ville de Paris :

TD3: tableaux avancées, première classe et chaînes

Introduction au langage Java

Programmation Objet Java Correction

Page 1 sur 5 TP3. Thèmes du TP : l la classe Object. l Vector<T> l tutorial Interfaces. l Stack<T>

Java Licence Professionnelle Cours 7 : Classes et méthodes abstraites

Java et les annotations

Généricité. en Java. (polymorphisme paramétrique) Philippe GENOUD UJF Janvier

Plan du cours. Historique du langage Nouveautés de Java 7

Corrigés des premiers exercices sur les classes

Classe Interne, Anonyme & Enumération

Exclusion Mutuelle. Arnaud Labourel Courriel : arnaud.labourel@lif.univ-mrs.fr. Université de Provence. 9 février 2011

Polymorphisme, la classe Object, les package et la visibilité en Java... 1

4. Groupement d objets

Serveur d'application Client HTML/JS. Apache Thrift Bootcamp

JAVA. Introduction à la programmation objet avec java 1/4. Nadir BOUSSOUKAIA

JADE : Java Agent DEvelopment framework. Laboratoire IBISC & Départ. GEII Université & IUT d Evry nadia.abchiche@ibisc.univ-evry.

Remote Method Invocation (RMI)

Généralités. javadoc. Format des commentaires. Format des commentaires. Caractères spéciaux. Insérer du code

Applet pour visualiser les variables «automate» notifiées

SHERLOCK 7. Version du 01/09/09 JAVASCRIPT 1.5

Pour signifier qu'une classe fille hérite d'une classe mère, on utilise le mot clé extends class fille extends mère

Tp 1 correction. Structures de données (IF2)

Langage Java. Classe de première SI

Paginer les données côté serveur, mettre en cache côté client

Java Licence Professionnelle CISII, Cours 2 : Classes et Objets

Calcul Parallèle. Cours 5 - JAVA RMI

Introduction. Les méthodes. Les méthodes. Identité et égalité. Identité et égalité. La copie d'objets. Identité et égalité.

Travaux Pratiques : Lucène - Gestion d un index plein texte

F. Barthélemy. 17 mai 2005

Programmation Orientée Objet - Licence TIS CM8/9. Rappel sur la séance précédente. Lancelot Pecquet Lancelot.Pecquet@math.univ-poitiers.

1. Structure d un programme C. 2. Commentaire: /*..texte */ On utilise aussi le commentaire du C++ qui est valable pour C: 3.

RMI. Remote Method Invocation: permet d'invoquer des méthodes d'objets distants.

Communication inter-processus (IPC) : tubes & sockets. exemples en C et en Java. F. Butelle

TD/TP PAC - Programmation n 3

Notion de thread (1/2)

Programmation en Java IUT GEII (MC-II1) 1

Serveur d'archivage 2007 Installation et utilisation de la BD exist

Développement mobile MIDP 2.0 Mobile 3D Graphics API (M3G) JSR 184. Frédéric BERTIN

Utilisation de JAVA coté Application serveur couplé avec Oracle Forms Hafed Benteftifa Novembre 2008

Architecture Orientée Service, JSON et API REST

Une introduction à la technologie EJB (2/3)

Java c est quoi? Java pourquoi?

TP n 2 Concepts de la programmation Objets Master 1 mention IL, semestre 2 Le type Abstrait Pile

Bases Java - Eclipse / Netbeans

INF 321 : mémento de la syntaxe de Java

Pour plus de détails concernant le protocole TCP conférez vous à la présentation des protocoles Internet enseignée pendant.

Programmation VBA/Excel. Programmation VBA. Pierre BONNET. Masters SMaRT & GSI - Supervision Industrielle P. Bonnet

Modèle à composants. Daniel Hagimont. IRIT/ENSEEIHT 2 rue Charles Camichel - BP TOULOUSE CEDEX 7. Remerciements

Recherche dans un tableau

Exercices sur les interfaces

Remote Method Invocation Les classes implémentant Serializable

Bases de données et fournisseurs de contenu

Objets et Programmation. origine des langages orientés-objet

Transcription:

Programmation Orientée Objet Jean-Christophe Routier Licence mention Informatique Université Lille Principe : détecter le maximum d erreurs à la compilation, mais pas toujours possible Gestion des erreurs à l exécution : par une valeur de retour difficile à traiter mécanisme de gestion des exceptions signaler là où le problème se pose dans le code séparer le traitement des cas normaux de celui des cas exceptionnels les cas problématiques sont transmis au gestionnaire d exceptions (exception handler) Université Lille - Licence Informatique Programmation Orientée Objet Université Lille - Licence Informatique Programmation Orientée Objet 2 Qu est ce qu un cas exceptionnel? une situation qui ne correspond au fonctionnement normal du programme diviser un nombre par envoyer un message sur une référence null accéder à des cases d un tableau en dehors des indices, réaliser un transtypage impossible tenter de référencer en lecture un fichier qui n existe pas etc. ArithmeticException NullPointerException ArrayIndexOutOfBoundsException ClassCastException FileNotFoundException etc. extrait de la javadoc classe java.lang.string : substring public String substring(int beginindex) Returns a new string that is a substring of this string. The substring begins with the character at the specified index and extends to the end of this string. Examples: "unhappy".substring(2) returns "happy" "Harbison".substring(3) returns "bison" "emptiness".substring(9) returns "" (an empty string) Parameters: beginindex - the beginning index, inclusive. Returns: the specified substring. Throws: IndexOutOfBoundsException - if beginindex is negative or larger than the length of this String object. Université Lille - Licence Informatique Programmation Orientée Objet 3 Université Lille - Licence Informatique Programmation Orientée Objet 4

Quelques méthodes du type Exception en java les exceptions sont des objets elles sont toutes du type Exception et leur type précis est un sous-type de Exception les classes d exceptions se nomment par convention QuelqueChose Exception des portions de code peuvent générer/lancer des exceptions, signes d un problème le programmeur dispose d un moyen pour capturer une exception et proposer une alternative/solution public void printstacktrace() public String getmessage() public String getlocalizedmessage() Université Lille - Licence Informatique Programmation Orientée Objet 5 Université Lille - Licence Informatique Programmation Orientée Objet 6 Exemple () 2 private int[] tab; 3 public TestException() { 4 this.tab = new int[2]; 5 for(int i= ; i < this.tab.length; i++) { this.tab[i]= i; 6 7 public void timoleon(int limite) { 8 for(int i= ; i < limite; i++) { 9 System.out.println(this.tab[i]); 2 public void go(int limite) { 3 4 5 6 7 TestException ref = new TestException(3); 8 ref.go(integer.parseint(args[])); 9 System.out.println("l exécution continue?"); 2 2 at TestException.go(TestException.java:3) at TestException.main(TestException.java:8) Université Lille - Licence Informatique Programmation Orientée Objet 7 Capturer une exception Lorsqu une portion de code est susceptible de lancer/lever une exception, il est possible d essayer d exécuter de ce code et de capturer l exception et d indiquer le traitement qui doit en être fait. code susceptible de lancer une exception catch (ClasseDExceptionLancee e) {.. traitement de l exception obj.method(); catch (NullPointerException e) { System.out.println("obj est null"); Université Lille - Licence Informatique Programmation Orientée Objet 8

Lorsqu une exception levée est capturée, cela n arrête pas le programme, On quitte un bloc try dès qu une exception est levée dans ce bloc, le flux d exécution reprend après le bloc. Si l exception est capturée, le traitement associé à cette capture est exécuté Le bloc générateur de l exception n est pas réexécuté après le traitement dû à la capture (même si la cause de l erreur a été corrigée par ce traitement) un même bloc peut être susceptible de lever plusieurs exceptions, il est possible de les traiter séparément ou globalement x = /obj.getvalue(); catch (NullPointerException e) { System.out.println("obj est null"); catch (ArithmeticException e) { System.out.println("val de obj == "); x = /obj.getvalue(); catch (Exception e) { System.out.println("excep "+e); Université Lille - Licence Informatique Programmation Orientée Objet 9 Exemple (2) idem public void go(int limite) { catch(arrayindexoutofboundsexception e) { System.out.println("avant"); System.out.println("apres"); idem avant at TestException.go(TestException.java:4) at TestException.main(TestException.java:25) apres l exécution continue? Université Lille - Licence Informatique Programmation Orientée Objet Exemple (autre) public class Livre { public boolean equals(object o) { try{ Livre lautre = (Livre) o; return this.livre.equals(lautre.livre) && this.auteur.equals(lautre.auteur) && this.annee == lautre.annee; catch (ClassCastException e) { return false; // peut générer une ClassCastException Université Lille - Licence Informatique Programmation Orientée Objet Cas de non capture Si une méthode contient une portion de code susceptible de lancer une exception et que l on ne souhaite pas (ou ne peut pas) traiter l exception dans le corps de la méthode, il est nécessaire d informer l utilisateur de la méthode que celle-ci peut générer une exception throws ClasseDException dans la signature de la méthode JavaDoc : tag @exception public class AClass { private String name; public int suffixe(int longueursuffixe) throws IndexOutOfBoundsException { return this.name.substring(this.name.length()-longueursuffixe); public FileReader openfile(string file) throws FileNotFoundException { return new FileReader(file); Université Lille - Licence Informatique Programmation Orientée Objet 2

Exemple (3) idem public void go(int limite) throws ArrayIndexOutOfBoundsException { TestException ref = new TestException(3); ref.go(integer.parseint(args[])); catch(arrayindexoutofboundsexception e) { at TestException.go(TestException.java:3) at TestException.main(TestException.java:2) il est possible qu un méthode soit susceptible de déclencher plusieurs exceptions : public void somemethod(args ) throws Exception,, ExceptionN { Université Lille - Licence Informatique Programmation Orientée Objet 3 Université Lille - Licence Informatique Programmation Orientée Objet 4 Lever une exception Exemple (4) Pour lever une exception explicitement dans une portion de code : créer un objet exception (de la classe d exception voulue) 2 lancer l exception à l aide de throw idem public void go(int limite) throws IllegalStateException { if (limite > this.tab.length) { throw new IllegalStateException("limite dépassée"); TestException ref = new TestException(3); ref.go(integer.parseint(args[])); catch(illegalstateexception e) { Exception in thread "main" java.lang.illegalstateexception: at TestException.go(TestException.java:4) at TestException.main(TestException.java:23) limite dépassée Université Lille - Licence Informatique Programmation Orientée Objet 5 Université Lille - Licence Informatique Programmation Orientée Objet 6

à suivre Réexécuter le bloc try après correction d une erreur : boolean done = false; while (! done) { traitement avec levée d exceptions possible done = true; catch(classedexception e) { correction problème mais on laise done à false pourquoi toutes les exceptions n ont pas nécessairement besoin d être capturées ou signalées (ce sont les Runtime )? créer ses propres exceptions Université Lille - Licence Informatique Programmation Orientée Objet 7 Université Lille - Licence Informatique Programmation Orientée Objet 8