2. lancer (throw) une exception consiste à la signaler



Documents pareils
La gestion des exceptions

Programmer en JAVA. par Tama

Auto-évaluation Programmation en Java

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

Corrigé des exercices sur les références

Remote Method Invocation Les classes implémentant Serializable

Calcul Parallèle. Cours 5 - JAVA RMI

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

Premiers Pas en Programmation Objet : les Classes et les Objets

Développement Logiciel

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

INITIATION AU LANGAGE JAVA

Un ordonnanceur stupide

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

ALGORITHMIQUE ET PROGRAMMATION ORIENTEE OBJET

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

Synchro et Threads Java TM

Chapitre 10. Les interfaces Comparable et Comparator 1

Support de cours et TD Programmation Orientée Objet

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

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

Programmation Par Objets

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

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

Introduction à Java. Matthieu Herrb CNRS-LAAS. Mars

Programmation Objet Java Correction

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

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

Initiation à JAVA et à la programmation objet.

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

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

PROGRAMMATION PAR OBJETS

Flux de données Lecture/Ecriture Fichiers

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

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

Remote Method Invocation (RMI)

Classe Interne, Anonyme & Enumération

Notion de thread (1/2)

Remote Method Invocation en Java (RMI)

Java Licence Professionnelle CISII,

1 Définition d une classe en Java

LOG4430 : Architecture logicielle et conception avancée

Une introduction à Java

RMI le langage Java XII-1 JMF

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

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

Threads. Threads. USTL routier 1

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

Notes de cours Practical BigData

Introduction au langage Java

Java RMI. Arnaud Labourel Courriel: Université de Provence. 8 mars 2011

TD/TP PAC - Programmation n 3

Programmation avec des objets : Cours 7. Menu du jour

TD/TP PAC - Programmation n 3

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

Java 1.5 : principales nouveautés

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

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

Applet pour visualiser les variables «automate» notifiées

Desktop Intégration. Rémi Forax

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

Prénom : Matricule : Sigle et titre du cours Groupe Trimestre INF1101 Algorithmes et structures de données Tous H2004. Loc Jeudi 29/4/2004

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

Utiliser Java sans BlueJ

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

Langage Java. Classe de première SI

Une introduction à la technologie EJB (2/3)

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

Package Java.util Classe générique

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

Création d une application JEE

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

Introduction : les processus. Introduction : les threads. Plan

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

INTRODUCTION A JAVA. Fichier en langage machine Exécutable

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

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

NFP 121. Java et les Threads. Présentation : Thierry Escalarasse Mai 2007

Interfaces graphiques avec l API Swing

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

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

Cahier des Charges du Projet Domotique. Choquet Mathieu Masson Jérôme Groupe 6. Domotique. p.1

INF 321 : mémento de la syntaxe de Java

Architecture Orientée Service, JSON et API REST

2. Comprendre les définitions de classes

Tutoriel d installation de Hibernate avec Eclipse

Programme Compte bancaire (code)

Cours 1: Java et les objets

Programmation en Java IUT GEII (MC-II1) 1

7 Développement d une application de MapReduce

Derrière toi Une machine virtuelle!

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

Introduction au langage de programmation Java

Java et les annotations

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

Aide mémoire UML & Java 1ère partie : Introduction. marc.lemaire@u-cergy.fr

et se trouve popularisé rapidement pour ses possibilités de développement liés au Web. Les

Apprendre la Programmation Orientée Objet avec le langage Java (avec exercices pratiques et corrigés)

Chapitre VI- La validation de la composition.

Transcription:

Cours 7 Exceptions 1 1. Une exception est un signal qui indique que quelque chose d'exceptionnel (par exemple une erreur) s est produite qui interrompt le flot d exécution normal du programme 2. lancer (throw) une exception consiste à la signaler 3. attraper (catch) une exécution permet d exécuter les actions nécessaires pour traiter cette situation 2

public class TSTExcp1 {public static void main (String[] args) {int tabent[]={1,2,3,4; tabent[4]=3; //erreur et arret System.out.print("fin de main "); java TSTExcp1 Exception in thread "main" java.lang.arrayindexoutofboundsexception: 4 at TSTExcp1.main(TSTExcp1.java:5) public class TSTExcp2 {public static void main (String[] args) {int tabent[]={1,2,3,4; try {tabent[4]=3; catch(exception e){system.out.println("exception: "+e); System.out.print("fin de main "); java TSTExcp2 Exception: java.lang.arrayindexoutofboundsexception: 4 fin de main 3 try-throw-catch bloc try le code lorsque tout va bien et on lance l exception à partir de ce bloc try {CodeThatMayThrowAnException catch(exception e) { ExceptionHandlingCode throw new ExceptionClassName(PossiblySomeArguments); exécution du bloc try block est arrêtée, normalement le contrôle est transféré au bloc catch bloc catch a un paramètre (objet exception créé) catch(exception e) { ExceptionHandlingCode 4

Lorsque le bloc try est exécuté: 1. Aucune exception est lancée dans ce bloc: le code du bloc catch n est pas exécuté l exécution continue avec le bloc suivant 2-Une exception est lancée: l exécution du try est interrompu le bloc du catch est exécuté l exécution continue avec le bloc suivant de catch 5 si une exception n est pas attrapée dans le bloc où elle a été lancée elle est transmise au bloc de niveau supérieur (récursivement) si une exception n est pas attrapée dans la méthode qui la lance, elle est propagée dans la méthode qui invoque cette dernière (récursivement) si une exception n est jamais attrapée 1- propagation jusqu à la méthode main() 2- affichage des messages d erreurs et la pile d appels 3- arrêt de l exécution du programme 6

Hierarchy of Throwable Objects 7 En JAVA, les exceptions sont des objets Throwable(java.lang.Throwable) Error non récupérable erreur système (plus de mémoire, problème de chargement dynamique, etc. Exception récupérable Exceptions usuelles NullPointerException NegativeArraySizeException IndexOutofBoundsException ArrayIndexOfBoundsException StringIndexOutOfBoundsExcpetion IllegalArgumentException ArithmeticException NumberFormatException IOException InterruptedExcpetion 8

Puisque les exceptions sont des objets, elles contiennent attributs (variables) particuliers méthodes particulières aussi attributs et méthodes standards String getmessage() void printstacktrace() Les exceptions étant des objets, leur structuration en une hiérarchie des classes permet de les traiter à différent niveaux d abstraction (via polymorphisme) 9 class EntNat {private int n; public EntNat(int m) throws ErrConst {if (m<0) throw new ErrConst(m); n=m; public int getn() {return n; class ErrConst extends Exception {private int errval; public ErrConst(int valeur) {errval=valeur; public int getvaleur() {return errval; public class TestExcep2 { public static void main (String[] args) {try {EntNat n1= new EntNat(20); System.out.println("n1= "+n1.getn()); EntNat n2= new EntNat(-12); System.out.println("n2 = "+n2.getn()); catch (ErrConst e) {System.out.println("Erreur de construction avec valeur "+e.getvaleur()); System.exit(-1); 10

un bloc try est suivi d un ou plusieurs blocs de catch qui permettent d'attraper les exceptions dont le type est spécifié et d exécuter le code spécifique un seul bloc de catch peut être exécuté (le premier susceptible d attraper l exception) 1- chaque clause catch est déclarée avec un argument de type Throwable ou sous-classe de Throwable 2- quand une exception est levée dans le bloc try, la première clause dont le type d argument correspond à celui de l exception levée est invoquée l ordre des blocs de catch est important 11 Classes d Exception Il y a plusieurs classes d exception prédéfinies. Elles ont toutes un constructeur avec un argument de type string une méthode accesseur getmessage() pour récupérer cet argument Plusieurs classes d exception ont définies dans différents packages standards import java.io.ioexception; La classe Exception définie dans java.lang est la classe de base de toute classe d exception Une classe d exception doit être dérivée d une classe d exception 12

finally permet de rassembler dans un seul bloc un ensemble d instructions autrement auraient du être dupliquées permet d effectuer des traitements après le bloc try, même une exception a été déclenchée ou non et attrapée ou non optionnel 13 class Erreur extends Exception { class Erreur1 extends Erreur { class Erreur2 extends Erreur { class A {public A (int n) throws Erreur { try{ if (n==1) throw new Erreur1(); if (n==2) throw new Erreur2(); if (n==3) throw new Erreur(); catch ( Erreur1 e) {System.out.println(" Exception Erreur1 dans A"); public class TestExcep3bis { public static void main (String[] args) {int n; for (n=1; n<=3; n++) { try {A a=new A(n); catch (Erreur1 e) {System.out.println("Exception Erreur1 dans main"); catch (Erreur2 e) {System.out.println("Exception Erreur2 dans main"); catch (Erreur e) {System.out.println("Exception Erreur dans main"); System.out.println(""); System.out.println("fin de main"); Exception Erreur1 dans A Exception Erreur2 dans main Exception Erreur dans main fin de main 14

class Erreur extends Exception { class Erreur1 extends Erreur { class Erreur2 extends Erreur { class A {public A (int n) throws Erreur { try{ if (n==1) throw new Erreur1(); if (n==2) throw new Erreur2(); if (n==3) throw new Erreur(); catch ( Erreur1 e) {System.out.println("Exception Erreur1 dans A"); catch (Erreur e) {System.out.println("Exception Erreur dans A"); throw(e); public class TestExcep3 { public static void main (String[] args) {int n; for (n=1; n<=3; n++) { try {A a=new A(n); catch (Erreur1 e) {System.out.println("Exception Erreur1 dans main"); catch (Erreur2 e) {System.out.println("Exception Erreur2 dans main"); catch (Erreur e) {System.out.println("Exception Erreur dans main"); System.out.println(""); System.out.println("fin de main"); Exception Erreur1 dans A Exception Erreur dans A Exception Erreur2 dans main Exception Erreur dans A Exception Erreur dans main fin de main 15 class EntNat {private int n; public EntNat(int m) throws ErrConst {if (m<0) throw new ErrConst(); n=m; public int getn() {return n; class ErrConst extends Exception { public class TestExcep4 { public static void main (String[] args) {try {EntNat n1= new EntNat(20); System.out.println("n1= "+n1.getn()); EntNat n2= new EntNat(-12); System.out.println("n2 = "+n2.getn()); catch (ErrConst e) n1= 20 Erreur de construction terminaison {System.out.println("Erreur de construction"); //System.exit(-1); finally {System.out.println("terminaison"); 16