Chapitre. Les exceptions. Java Avancé. Yousri Kessentini

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

Corrigé des exercices sur les références

Java Licence Professionnelle CISII,

TD Objets distribués n 3 : Windows XP et Visual Studio.NET. Introduction à.net Remoting

Package Java.util Classe générique

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

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

Premiers Pas en Programmation Objet : les Classes et les Objets

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

Un ordonnanceur stupide

Programmation par les Objets en Java

Synchro et Threads Java TM

Programmer en JAVA. par Tama

RMI le langage Java XII-1 JMF

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

Programmation Objet Java Correction

Introduction à Java. Matthieu Herrb CNRS-LAAS. Mars

La gestion des exceptions

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

Programmation Par Objets

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

Auto-évaluation Programmation en Java

Java DataBaseConnectivity

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

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

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

Java Licence Professionnelle CISII, Cours 2 : Classes et Objets

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

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

Remote Method Invocation (RMI)

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

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 )

TD/TP PAC - Programmation n 3

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

Cours 14 Les fichiers

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

INF 321 : mémento de la syntaxe de Java

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

INTRODUCTION A JAVA. Fichier en langage machine Exécutable

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

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

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

Programme Compte bancaire (code)

Programmation avec des objets : Cours 7. Menu du jour

TP, première séquence d exercices.

Interfaces graphiques avec l API Swing

Corrigés des premiers exercices sur les classes

LOG4430 : Architecture logicielle et conception avancée

Java 1.5 : principales nouveautés

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

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

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

Threads. Threads. USTL routier 1

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

Remote Method Invocation en Java (RMI)

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

2. Comprendre les définitions de classes

Cours de Programmation Impérative: Zones de mémoires et pointeurs

Environnements de développement (intégrés)

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

I. Introduction aux fonctions : les fonctions standards

Initiation à JAVA et à la programmation objet.

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

Remote Method Invocation Les classes implémentant Serializable

Desktop Intégration. Rémi Forax

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

INITIATION AU LANGAGE C SUR PIC DE MICROSHIP

Une introduction à la technologie EJB (2/3)

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

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

CONCOURS DE L AGRÉGATION INTERNE «ÉCONOMIE ET GESTION» SESSION 2015 SECONDE ÉPREUVE

Langage Java. Classe de première SI

Langage et Concepts de Programmation Objet. 1 Attributs et Méthodes d instance ou de classe. Travaux Dirigés no2

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

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

F. Barthélemy. 17 mai 2005

TP3. Mail. Attention aux fausses manoeuvres lors de ce TP vous pouvez endommager votre mail sur ouindose.

ACTIVITÉ DE PROGRAMMATION

INITIATION AU LANGAGE JAVA

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

Création d une application JEE

Calcul Parallèle. Cours 5 - JAVA RMI

Polycopié Cours Programmation Orientée Objet sous Java Programme : Filière SMI S5

Notion de thread (1/2)

Classe ClInfoCGI. Fonctions membres principales. Gestion des erreurs

Utilisation d objets : String et ArrayList

Support de cours et TD Programmation Orientée Objet

Procédures Stockées WAVESOFT ws_sp_getidtable Exemple : ws_sp_getnextsouche Exemple :... 12

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

Projet de programmation (IK3) : TP n 1 Correction

Le Modèle de Sécurité dans JAVA

Plan. Exemple: Application bancaire. Introduction. OCL Object Constraint Language Le langage de contraintes d'uml

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

Solutions du chapitre 4

Génie Logiciel avec Ada. 4 février 2013

Exercices sur les interfaces

Introduction au langage Java

Tutoriel d installation de Hibernate avec Eclipse

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

Transcription:

Chapitre 1 Les exceptions 1

Prévoir les erreurs d'utilisation Certains cas d'erreurs peuvent être prévus à l'avance par le programmeur. exemples: erreurs d'entrée-sortie (I/O fichiers) erreurs de saisie de données par l utilisateur Le programmeur peut : «Laisser planter» le programme à l endroit où l erreur est détectée Manifester explicitement le problème à la couche supérieure Tenter une correction 2

Notion d'exception En Java, les erreurs se produisent lors d'une exécution sous la forme d'exceptions. Une exception : est un objet, instance d'une classe d'exception provoque la sortie d'une méthode correspond à un type d'erreur contient des informations sur cette erreur 3

Les exceptions Exception situation particulière imposant une rupture dans le cours d un programme : erreur, impossibilité Un objet JAVA Exception est une «bulle» logicielle produite dans cette situation qui va remonter la pile d exécution pour trouver une portion de code apte à la traiter Si cette portion n existe pas, le programme s arrête en affichant la pile d exécution. Sinon, la portion de code sert à pallier au problème (poursuite éventuelle, ou sortie) 4

Terminologie Une exception est un signal qui indique que quelque chose d'exceptionnel est survenu en cours d'exécution. Deux solutions alors : laisser le programme se terminer avec une erreur, essayer, malgré l'exception, de continuer l'exécution normale. Lever une exception consiste à signaler quelque chose d'exceptionnel. Capturer l'exception consiste à essayer de la traiter. 5

Arbre des exceptions Throwable String (message d'erreur) Exception VosExceptions... RunTimeException NullPointerException ClassCastException... exceptions prédéfinies Error OutOfMemoryError Les erreurs sont graves et il est recommandé de ne pas les corriger. 6

Nature des exceptions En Java, les exceptions sont des objets ayant 3 caractéristiques: Un type d exception (défini par la classe de l objet exception) Une chaîne de caractères (option), (hérité de la classe Throwable). Un «instantané» de la pile d exécution au moment de la création. Les exceptions construites par l'utilisateur étendent la classe Exception RunTimeException, Error sont des exceptions et des erreurs prédéfinies et/ou gérées par Java 7

Quelques exceptions prédéfinies Division par zéro pour les entiers : ArithmeticException Référence nulle : NullPointerException Tentative de forçage de type illégale : ClassCastException Tentative de création d'un tableau de taille négative : NegativeArraySizeException Dépassement de limite d'un tableau : ArrayIndexOutOfBoundsException 8

Capture d'une exception Les sections try et catch servent à capturer une exception dans une méthode (attraper la bulle ) exemple : public void XXX( ) { try{.. catch { Si une erreur se produit ici. On tente de récupérer là. 9

try / catch / finally try {... catch (<une-exception>) {... catch (<une_autre_exception>) {...... Autant de blocs catch que l'on veut. Bloc finally facultatif. finally {... 10

Traitement des exceptions (1) Le bloc try est exécuté jusqu'à ce qu'il se termine avec succès ou bien qu'une exception soit levée. Dans ce dernier cas, les clauses catch sont examinées l'une après l'autre dans le but d'en trouver une qui traite cette classe d'exceptions (ou une superclasse). Les clauses catch doivent donc traiter les exceptions de la plus spécifique à la plus générale. Si une clause catch convenant à cette exception a été trouvée et le bloc exécuté, l'exécution du programme reprend son cours. 11

Traitement des exceptions (2) Si elles ne sont pas immédiatement capturées par un bloc catch, les exceptions se propagent en remontant la pile d'appels des méthodes, jusqu'à être traitées. Si une exception n'est jamais capturée, elle se propage jusqu'à la méthode main(), ce qui pousse l'interpréteur Java à afficher un message d'erreur et à s'arrêter. L'interpréteur Java affiche un message identifiant : l'exception, la méthode qui l'a causée, la ligne correspondante dans le fichier. 12

Bloc finally Un bloc finally permet au programmeur de définir un ensemble d'instructions qui est toujours exécuté, que l'exception soit levée ou non, capturée ou non. La seule instruction qui peut faire qu'un bloc finally ne soit pas exécuté est System.exit(). 13

Interception vs propagation Si une méthode peut émettre une exception (ou appelle une autre méthode qui peut en émettre une) il faut : soit propager l'exception (la méthode doit l'avoir déclarée); soit intercepter et traiter l'exception. 14

Exemple de propagation public int ajouter(int a, String str) throws NumberFormatException int b = Integer.parseInt(str); a = a + b; return a; 15

Exemple d'interception public int ajouter(int a, String str) { try { int b = Integer.parseInt(str); a = a + b; catch (NumberFormatException e) { System.out.println(e.getMessage()); return a; 16

Les objets Exception La classe Exception hérite de La classe Throwable. La classe Throwable définit un message de type String qui est hérité par toutes les classes d'exception. Ce champ est utilisé pour stocker le message décrivant l'exception. Il est positionné en passant un argument au constructeur. Ce message peut être récupéré par la méthode getmessage(). 17

Exemple public class MonException extends Exception { public MonException() { super(); public MonException(String s) { super(s); 18

Levée d'exceptions Le programmeur peut lever ses propres exceptions à l'aide du mot réservé throw. throw prend en paramètre un objet instance de Throwable ou d'une de ses sous-classes. Les objets exception sont souvent instanciés dans l'instruction même qui assure leur lancement. throw new MonException("Mon exception s'est produite!!!"); 19

Emission d'une exception L'exception elle-même est levée par l'instruction throw. Une méthode susceptible de lever une exception est identifiée par le mot-clé throws suivi du type de l'exception exemple : public void ouvrirfichier(string name) throws MonException {if (name==null) throw new MonException(); else {... 20

throws (1) Pour "laisser remonter" à la méthode appelante une exception qu'il ne veut pas traiter, le programmeur rajoute le mot réservé throws à la déclaration de la méthode dans laquelle l'exception est susceptible de se manifester. public void unemethode() throws IOException { // ne traite pas l'exception IOException // mais est succeptible de la générer 21

Exemple public class MonException extends Exception{ public final String nom; public MonException(String st) { super("le nombre "+st+" ne figure pas"); nom=st; 22

Exemple (suite) class Essai{ static String[] tab={"zéro","un","deux","trois","quatre"; static int chercher(string st ) throws MonException{ for(int i=0;i<tab.length;i++) if (tab[i].equals(st)) return i; throw new MonException(st); public static void main(string st[]){ try{ chercher("zwei"); catch(exception e){ System.out.println(e); Résultat exceptions.monexception: le nombre zwei ne figure pas 23

Conclusion Grâce aux exceptions, Java possède un mécanisme sophistiqué de gestion des erreurs permettant d écrire du code «robuste» Le programme peut déclencher des exceptions au moment opportun. Le programme peut capturer et traiter les exceptions grâce au bloc d instruction catch try finally Le programmeur peut définir ses propres classes d exceptions 24