La Gestion des Exceptions



Documents pareils
Programmer en JAVA. par Tama

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

Corrigé des exercices sur les références

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

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

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

Programmation Objet Java Correction

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

Introduction à Java. Matthieu Herrb CNRS-LAAS. Mars

Auto-évaluation Programmation en Java

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

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

Synchro et Threads Java TM

La gestion des exceptions

RMI le langage Java XII-1 JMF

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

INTRODUCTION A JAVA. Fichier en langage machine Exécutable

Remote Method Invocation (RMI)

Initiation à JAVA et à la programmation objet.

Java 1.5 : principales nouveautés

Programmation par les Objets en Java

Un ordonnanceur stupide

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 )

Support de cours et TD Programmation Orientée Objet

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

ACTIVITÉ DE PROGRAMMATION

Structure d un programme et Compilation Notions de classe et d objet Syntaxe

Classe ClInfoCGI. Fonctions membres principales. Gestion des erreurs

Java Licence Professionnelle CISII,

Info0604 Programmation multi-threadée. Cours 5. Programmation multi-threadée en Java

INF2015 Développement de logiciels dans un environnement Agile. Examen intra 20 février :30 à 20:30

Cours 1 : Introduction. Langages objets. but du module. contrôle des connaissances. Pourquoi Java? présentation du module. Présentation de Java

Chapitre 10. Les interfaces Comparable et Comparator 1

Chapitre 2. Classes et objets

Développement Logiciel

Systeme d'exploitation

Premiers Pas en Programmation Objet : les Classes et les Objets

Interfaces graphiques avec l API Swing

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

INITIATION AU LANGAGE JAVA

Une introduction à Java

API04 Contribution. Apache Hadoop: Présentation et application dans le domaine des Data Warehouses. Introduction. Architecture

1 Définition d une classe en Java

Remote Method Invocation Les classes implémentant Serializable

Sécurité Java 2. Première approche. Installation des exemples. Exemple d'une applet

Remote Method Invocation en Java (RMI)

Utiliser Java sans BlueJ

Derrière toi Une machine virtuelle!

Introduction au langage Java

Généralités sur le Langage Java et éléments syntaxiques.

Java Licence Professionnelle CISII, Cours 2 : Classes et Objets

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

Introduction à JDBC. Accès aux bases de données en Java

Introduction : les processus. Introduction : les threads. Plan

TP1 : Initiation à Java et Eclipse

LOG4430 : Architecture logicielle et conception avancée

Encapsulation. L'encapsulation consiste à rendre les membres d'un objet plus ou moins visibles pour les autres objets.

F. Barthélemy. 17 mai 2005

J2SE Threads, 1ère partie Principe Cycle de vie Création Synchronisation

Threads. Threads. USTL routier 1

Création d une application JEE

Gestion distribuée (par sockets) de banque en Java

Classe Interne, Anonyme & Enumération

Calcul Parallèle. Cours 5 - JAVA RMI

Langage Java. Classe de première SI

Corrigés des premiers exercices sur les classes

Programmation Par Objets

.NET - Classe de Log

PROGRAMMATION PAR OBJETS

Chapitre I Notions de base et outils de travail

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

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

Java DataBaseConnectivity

Chapitre 2 Devine mon nombre!

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

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

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

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

Desktop Intégration. Rémi Forax

La persistance des données dans les applications : DAO, JPA, Hibernate... COMPIL 2010 francois.jannin@inp-toulouse.fr 1

Cours 1: Java et les objets

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

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

Héritage presque multiple en Java (1/2)

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

INF 321 : mémento de la syntaxe de Java

Initiation à la programmation orientée-objet avec le langage Java

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

La JVM. La machine virtuelle Java. La JVM. La JVM

Maîtriser le menu contextuel dans un OfficeBean

Utilisation d objets : String et ArrayList

Info0101 Intro. à l'algorithmique et à la programmation. Cours 3. Le langage Java

Java Licence Professionnelle CISII,

Programme Compte bancaire (code)

I. Introduction aux fonctions : les fonctions standards

Solutions du chapitre 4

Java Licence professionnelle CISII,

IFT287 Exploitation de base de données relationnelles et orientées objet. Laboratoire Mon premier programme Java en Eclipse

as Architecture des Systèmes d Information

Transcription:

La Gestion des Exceptions

Les exceptions Les exceptions représentent le mécanisme de gestion des erreurs intégré au langage Java. Il se compose d'objets représentant les erreurs et d'un ensemble de troismotsclésquipermettentdedétecteretdetraiterceserreurs(try, catchet finally)etdelesleveroulespropager(throwet throws). Lorsde ladétection d'une erreur,un objet quihérite delaclasse Exceptionest créé (on dit qu'une exception est levée) et propagé à travers la pile d'exécution jusqu'à ce qu'il soit traité. Ces mécanismes permettent de renforcer la sécurité du code Java.

Les exceptions Exemple: Une exception levée à l exécution non capturée public class TestException { public static void main(string[] args) { Résultat: int i = 3; int j = 0; C:> java TestException System.out.println("résultat = " + (i / j)); Exception in thread "main" java.lang.arithmeticexception: /by zero at TestException.main(TestException.java: 5)

Les exceptions Si dans un bloc de code on fait appel à une méthode qui peut potentiellement générer une exception, on doit soit essayer de la récupérer avec try/catch, soit ajouterlemotcléthrowsdansladéclarationdubloc.sionnelefaitpas,ilyaune erreur à la compilation ou à l exécution. throws permet de déléguer la responsabilité des erreurs vers la méthode appelante. Ce procédé présente un inconvénient: de nombreuses méthodes des packages java indiquent dans leur déclaration qu'elles peuvent lever une exception. Cependant ceci garantie que certaines exceptions critiques seront prises explicitement en compte par le programmeur.

Les mots clés try, catch et finally Le bloc try rassemble les appels de méthodes susceptibles de produire des erreurs ou des exceptions. L'instruction try est suivie d'instructions entre des accolades. Exemple: try { opération_risquée ; catch (ExceptionInteressante e) { traitements catch (ExceptionParticulière e) { traitements catch (Exception e) { traitements finally { traitement_pour_terminer_proprement;

Les mots clés try, catch et finally Si un événement indésirable survient dans le bloc try, la partie éventuellement non exécutéedeceblocestabandonnéeetlepremierbloccatchesttraité.sicatchestdéfini pour capturer l'exception issue du bloc try alors elle est traitée en exécutant le code associé au bloc. Si le bloc catch est vide (aucune instruction entre les accolades) alors l'exception capturée est ignorée. Une telle utilisation de l'instruction try/catch n'est pas une bonne pratique: il est préférable de toujours apporter un traitement adapté lors de la capture d'une exception. S'il y a plusieurs types d'erreurs et d'exceptions à intercepter, il faut définir autant de bloc catch que de type d'événement. Par type d'exception, il faut comprendre«qui est du type de la classe de l'exception ou d'une de ses sous classes». Ainsi dans l'ordre séquentiel des clauses catch, un type d'exception ne doit pas venir après un type d'une exception d'une super classe. Il faut faire attention à l'ordre des clauses catch pour traiter en premier les exceptions les plus précises (sous classes) avant les exceptions plus générales. Un message d'erreur est émis par le compilateur dans le cas contraire.

Les mots clés try, catch et finally Exemple: erreur à la compilation car Exception est traitée en premier alors que ArithmeticException est une sous classe de Exception public class TestException { public static void main(java.lang.string[] args) { int i = 3; int j = 0; try { System.out.println("résultat = " + (i / j)); catch (Exception e) { //traitements catch (ArithmeticException e) {//traitements Résultat: C:\tests>javac TestException.java TestException.java:11: catch not reached. catch (ArithmeticException e) { ^ 1 error

Les mots clés try, catch et finally Sil'exceptiongénéréeestuneinstancedelaclassedéclaréedanslaclausecatch ou d'une classe dérivée, alors on exécute le bloc associé. Si l'exception n'est pas traité par un bloc catch, elle sera transmise au bloc de niveau supérieur. L'exécution totale du bloc try et l exécution d'un bloc d'une clause catch sont mutuellement exclusives: si une exception est levée, l'exécution du bloc try est arrêtée et si elle existe, la clause catch adéquate est exécutée. La clause finally définit un bloc qui sera toujours exécuté, qu'une exception soit levée ou non. Ceblocestfacultatif.Ilestaussiexécutésidanslebloctryilyauneinstruction break ou continue.

La classe Throwable Cette classe descend directement de la classe Object: c'est la classe de base pour le traitement des erreurs. Elle possède deux constructeurs : Throwable() Throwable(String message): la chaine qui est en paramètre permet de définir un message qui permet de décrire l exception et qui pourra être consultée dans un bloc catch. Les principales méthodes de la classe Throwable sont: String getmessage( ): lecture du message d erreur void printstacktrace( ):affiche l exception et l état de la pile d exécution au moment de son appel

La classe Throwable Exemple: public class TestException { public static void main(string[] args) { int i = 3; int j = 0; try { System.out.println("résultat = " + (i / j)); catch (ArithmeticException e) { System.out.println("getmessage:") ; System.out.println(e.getMessage()); System.out.println("printStackTrace :"); e.printstacktrace();

La classe Throwable Résultat: C:>java TestException getmessage / by zero printstacktrace java.lang.arithmeticexception: / by zero at TestException.main(TestException.java:8)

Les classes Exception, RunTimeExceptionet et Error Ces trois classes descendent de Throwable: toutes les exceptions dérivent de la classe Throwable.

Les classes Exception, RunTimeExceptionet et Error La classe Errorreprésente une erreur grave intervenue dans la machine virtuelle Java ou dans un sous système Java. L'application Java s'arrête instantanément dès l'apparition d'une exception de la classe Error. La classe Exception représente des erreurs moins graves. Les exceptions héritant de classe RuntimeExceptionn'ont pas besoin d'être détectées impérativement par des blocs try/catch..

Les exceptions personnalisées Pour générer une exception, il suffit d'utiliser le mot clé throw, suivi d'un objet dont la classe dérive de Throwable. Si l'on veut générer une exception dans une méthode avec throw, il faut l'indiquer dans la déclaration de la méthode, en utilisant le mot clé throws. En cas de nécessité, on peut créer ses propres exceptions. Elles descendent des classes Exceptionou RunTimeExceptionmais pas de la classe Error. Il est préférable (par convention) d'inclure le mot «Exception» dans le nom de la nouvelle classe.

Les exceptions personnalisées Exemple: public class SaisieErroneeException extends Exception{ public SaisieErroneeException() { super(); public SaisieErroneeException(String s) { super(s);

Les exceptions personnalisées public class TestSaisieErroneeException { public static void controle(string chaine) throws if (chaine.equals("") == true) SaisieErroneeException { throw new SaisieErroneeException("Saisie erronee : chaine vide"); public static void main(string[] args) { String chaine1 = "bonjour"; String chaine2 = "";

Les exceptions personnalisées try { controle(chaine1); catch (SaisieErroneeException e) { System.out.println("Chaine1 saisie erronee"); try { controle(chaine2); catch (SaisieErroneeException e) { System.out.println("Chaine2 saisie erronee");

Les exceptions personnalisées Les méthodes pouvant lever des exceptions doivent inclure une clause throws nom_exception dans leur en tête. L'objectif est double : avoir une valeur documentaire et préciser au compilateur que cette méthode pourra lever cette exception et que toute méthode qui l'appelle devra prendre en compte cette exception(traitement ou propagation). Silaméthodeappelantenetraitepasl'erreurounelapropagepas,lecompilateur génère l'exception nom_exception must be caught or it must be declared in the throws clause of this methode. Java n'oblige la déclaration des exceptions dans l'en tête de la méthode que pour les exceptions dites contrôlées (checked). Les exceptions non contrôlées (unchecked) peuvent être capturées mais n'ont pas à être déclarées. Les exceptions et erreurs qui héritent de RunTimeException et de Error sont non contrôlées. Toutes les autres exceptions sont contrôlées.

Utilisation des exceptions Il est préférable d'utiliser les exceptions fournies par Java lorsque qu'une de ces exceptions répond au besoin plutôt que de définir sa propre exception. Il existe trois types d'exceptions: Error : ces exceptions concernent des problèmes liés à l'environnement. Elles héritent de la classe Error(exemple: OutOfMemoryError) RuntimeException : ces exceptions concernent des erreurs de programmation qui peuvent survenir à de nombreux endroits dans le code (exemple : NullPointerException). Elles héritent de la classe RuntimeException Checked exception : ces exceptions doivent être traitées ou propagées. Toutes les exceptions qui n'appartiennent pas aux catégories précédentes sontdecetype

Utilisation des exceptions Les exceptions de type Erroret RuntimeExceptionsont dites uncheckedexceptions car les méthodes n'ont pas d'obligation à les traiter ou déclarer leur propagation explicitement. Ceci se justifie par le fait que leur levée n'est pas facilement prédictible. Il n'est pas recommandé de créer ces propres exceptions en dérivant d'une exception de type unchecked(classe de type RuntimeException). Même si cela peut sembler plus facile puisqu'il n'est pas obligatoire de déclarer leur propagation, cela peut engendrer certaines difficultés, notamment : oublier de traiter cette exception ne pas savoir que cette exception peut être levée par une méthode. Cependant, l'utilisation d'exceptions de type uncheckedse répand de plus en plus notamment depuis la diffusion de la plate-forme.net qui ne propose que ce type d'exceptions.