Solutions du chapitre 14



Documents pareils
Auto-évaluation Programmation en Java

Programmer en JAVA. par Tama

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

Solutions du chapitre 4

La gestion des exceptions

Une introduction à Java

Corrigé des exercices sur les références

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

Programmation Par Objets

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

Interfaces graphiques avec l API Swing

Programmation Objet Java Correction

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

Remote Method Invocation (RMI)

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

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

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

Introduction au langage Java

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

Synchro et Threads Java TM

Développement Logiciel

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

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

Un ordonnanceur stupide

Calcul Parallèle. Cours 5 - JAVA RMI

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

Java Licence Professionnelle CISII,

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

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

Threads. Threads. USTL routier 1

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

PROGRAMMATION PAR OBJETS

LOG4430 : Architecture logicielle et conception avancée

ALGORITHMIQUE ET PROGRAMMATION ORIENTEE OBJET

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

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

1 Définition d une classe en Java

Cours 1: Java et les objets

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

Flux de données Lecture/Ecriture Fichiers

TD/TP PAC - Programmation n 3

Programmation avec des objets : Cours 7. Menu du jour

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

Package Java.util Classe générique

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

Remote Method Invocation en Java (RMI)

Desktop Intégration. Rémi Forax

INITIATION AU LANGAGE JAVA

Chapitre 10. Les interfaces Comparable et Comparator 1

Remote Method Invocation Les classes implémentant Serializable

Premiers Pas en Programmation Objet : les Classes et les Objets

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

Introduction à Java. Matthieu Herrb CNRS-LAAS. Mars

Introduction : les processus. Introduction : les threads. Plan

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

Support de cours et TD Programmation Orientée Objet

RMI le langage Java XII-1 JMF

Cours 6 : Programmation répartie

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

Langage à objets : JAVA (1)

Programmation par les Objets en Java

TP1 : Initiation à Java et Eclipse

TP Composants Java ME - Java EE. Le serveur GereCompteBancaireServlet

Programmation Orientée Objet application au langage Java Version Novembre 2007

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

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

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

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

Initiation à JAVA et à la programmation objet.

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

Java Licence Professionnelle CISII, Cours 2 : Classes et Objets

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

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

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

LOG4430 : Architecture logicielle et conception avancée

Java 1.5 : principales nouveautés

Java DataBaseConnectivity

Notes de cours Practical BigData

INTRODUCTION A JAVA. Fichier en langage machine Exécutable

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

Classe Interne, Anonyme & Enumération

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

Derrière toi Une machine virtuelle!

Création d une application JEE

TP, première séquence d exercices.

Projet de programmation (IK3) : TP n 1 Correction

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

Maîtriser le menu contextuel dans un OfficeBean

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

Le Modèle de Sécurité dans JAVA

Notion de thread (1/2)

F. Barthélemy. 17 mai 2005

TD/TP PAC - Programmation n 3

Arbres binaires de recherche

Java et les annotations

Utiliser Java sans BlueJ

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

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

ETUDE DE CAS en UML : GESTION DES COMMANDES DE PIECES FABRIQUEES PAR LA SOCIETE C

Transcription:

Solutions du chapitre 14 Traitement des exceptions 14.16 Sous quelles circonstances utiliseriez-vous l instruction suivante? catch ( Exception e ) { throw e; } Cette instruction sert à capturer toute exception et à la relancer pour qu elle soit gérée par un gestionnaire d exception placé dans un appel de méthode précédent dans la pile d appel de méthodes. 14.17 Dénombrez les bénéfices qu apporte le traitement des exceptions par rapport aux méthodes habituelles de traitement des erreurs. 14.18 Décrivez une technique orientée objets de gestion d exceptions apparentées. Créer une superclasse pour toutes les exceptions liées. Dans cette classe, placer toutes les fonctionnalités que les exceptions possèdent en commun. À partir de cette classe, dériver toutes les classes d exceptions nécessaires. Une fois la hiérarchie de classes établie, les exceptions de cette hiérarchie sont ensuite susceptibles d une capture soit sous la forme du type d exception de la superclasse, soit comme l un des types de sous-classe de cette exception. 14.19 Jusqu à ce chapitre, nous avons considéré que la gestion des erreurs détectées par les constructeurs est quelque peu malaisée. Expliquez pourquoi le traitement des exceptions est une voie efficace qui permet la gestion des échecs des constructeurs. Une exception levée transmet au monde extérieur des informations relatives au constructeur défaillant et la responsabilité de gérer la défaillance. Les exceptions levées dans les constructeurs provoquent le marquage pour une éventuelle collecte d ordures des objets construits et faisant partie de l objet en cours de construction. 14.20 Supposez qu un programme lance une exception et que le gestionnaire d exception adéquat commence à s exécuter. Supposez à présent que le gestionnaire d exception lui-même lance la même exception. Ceci provoque-t-il une récursion infinie? Détaillez votre réponse. Non. L exception précédente est perdue et l exception la plus récente est levée dans le bloc catch. 14.21 Utilisez l héritage pour créer une superclasse d exception et diverses sous-classes d exception. Écrivez un programme de démonstration que le catch qui spécifie la superclasse intercepte aussi les exceptions des sous-classes. 1 // Solution de l exercice 14.21. 2 // Demo.java 3 // Ce programme montre qu une superclasse d exception 4 // capture les exceptions de ses sous-classes. import javax.swing.*; 6 7 class ExceptionA extends Exception {} 8 9 class ExceptionB extends ExceptionA {} 10 11 class ExceptionC extends ExceptionB {} 12 13 public class Demo { 14 1 public static void main( String args[] ) 16 { 17 try { 18 throw new ExceptionC();

19 } 20 catch( ExceptionA a ) { 21 JOptionPane.showMessageDialog( 22 null, a.tostring(), "Exception", 23 JOptionPane.INFORMATION_MESSAGE ); 24 } 2 26 try { 27 throw new ExceptionB(); 28 } 29 catch( ExceptionA b ) { 30 JOptionPane.showMessageDialog( 31 null, b.tostring(), "Exception", 32 JOptionPane.INFORMATION_MESSAGE ); 33 } 34 3 System.exit( 0 ); 36 } 37 } 14.22 Écrivez un programme en Java qui montre que tous les finaliseurs des objets construits dans un bloc ne sont pas nécessairement appelés après la levée d une exception à partir de ce bloc. 1 // Solution de l exercice 14.22. 2 // Demo.java 3 // Ce programme montre que tous les finaliseurs ne sont pas nécessairement 4 // appelés lorsqu une exception apparaît. 6 class ExceptionA extends Exception {} 7 8 public class Demo { 9 private final static int DELAI = 40; 10 11 public static void main( String args[] ) 12 { 13 Objet1 obj = new Objet1( "Robert" ); 14 1 obj = new Objet1( "Marielle" ); 16 17 // Essayer de forcer la collecte d ordures. 18 System.gc(); 19 System.gc(); 20 21 try { 22 throw new ExceptionA(); 23 } 24 catch( ExceptionA a ) { 2 System.out.println( "ExceptionA s est produite" ); 26 System.exit( 0 ); 27 } 28 29 System.exit( 0 ); 30 } 31 } 32 33 class Objet1 { 34 private String nom; 3

36 public Objet1( String n ) { 37 nom = n; 38 System.out.println( "Créé un objet1 appelé " + nom ); 39 } 40 41 protected void finalize() { 42 System.out.println( "Détruit un objet1 appelé " + nom ); 43 } 44 } Créé un objet1 appelé Robert Créé un objet1 appelé Marielle Détruit un objet1 appelé Robert ExceptionA s est produite 14.23 Écrivez un programme en Java qui démontre comment diverses exceptions sont capturées par l expression: catch ( Exception e ) 1 // Solution de l exercice 14.23. 2 // Demo2.java 3 // Ce programme montre la capture d une Exception e. 4 class ExceptionA extends Exception {} 6 7 class ExceptionB extends ExceptionA {} 8 9 public class Demo2 { 10 11 public static void main( String args[] ) 12 { 13 try { 14 throw new ExceptionA(); 1 } catch( Exception e ) { 16 System.out.println( e.tostring() ); 17 } 18 19 try { 20 throw new ExceptionB(); 21 } catch( Exception e ) { 22 System.out.println( e.tostring() ); 23 } 24 2 try { 26 throw new NullPointerException(); 27 } catch( Exception e ) { 28 System.out.println( e.tostring() ); 29 } 30 } 31 } ExceptionA ExceptionB java.lang.nullpointerexception 14.24 Écrivez un programme en Java qui montre que l ordre des gestionnaires d exception est important. Si vous essayez de capturer une exception d un type de superclasse avant un type de sous-classe, le compilateur génère des erreurs. Expliquez pourquoi ces erreurs apparaissent.

1 // Solution de l exercice 14.24, partie II. 2 // ErreurDeCompilation.java 3 // Ce programme génère une erreur de compilation. 4 import java.io.*; 6 public class ErreurDeCompilation { 7 public static void main( String args[] ) 8 { 9 try { 10 throw new IOException(); 11 } 12 catch ( Exception e ) { 13 e.printstacktrace(); 14 } 1 catch ( IOException io ) { 16 System.err.println( "IOException" ); 17 } 18 } 19 } ErreurDeCompilation.java:1: catch not reached. catch ( IOException io ) { ^ 1 error 14.2 Écrivez un programme en Java qui montre un constructeur passant des informations relatives à un échec à la construction, à un gestionnaire d exception situé après un bloc try. 1 // Solution de l exercice 14.2. 2 // Demo3.java 3 // Ce programme montre un constructor qui lève une exception. 4 class QuelquException { 6 public QuelquException() throws Exception 7 { 8 throw new Exception(); 9 } 10 } 11 12 public class Demo3 { 13 14 public static void main( String args[] ) 1 { 16 QuelquException o; 17 18 try { 19 o = new QuelquException(); 20 } catch( Exception e ) { 21 System.out.println( e.tostring() ); 22 } 23 } 24 } java.lang.exception 14.26 Écrivez un programme en Java qui illustre le relancement d une exception. 1 // Solution de l exercice 14.26. 2 // Demo4.java

3 // Ce programme montre le relancement d une exception. 4 import javax.swing.*; 6 public class Demo4 { 7 8 public static void main( String args[] ) 9 { 10 try { 11 methodequelconque(); 12 } 13 catch( Exception e ) { 14 JOptionPane.showMessageDialog( 1 null, "Gérée dans main: " + e, "Exception", 16 JOptionPane.INFORMATION_MESSAGE ); 17 } 18 19 System.exit( 0 ); 20 } 21 22 public static void methodequelconque() throws Exception 23 { 24 try { 2 methodequelconque2(); 26 } 27 catch( Exception e ) { 28 throw e; // Relancer l exception. 29 } 30 } 31 32 public static void methodequelconque2() throws Exception 33 { throw new Exception(); } 34 } 14.27 Écrivez un programme en Java qui montre qu une méthode qui a son propre bloc try n est pas obligée de capturer toute erreur possible, générée au sein du try. Quelques exceptions peuvent passer à travers les mailles du filet et se voir traitées sous d autres étendues. 1 // Solution de l exercice 14.27. 2 // Demo.java 3 // Ce programme montre comment relancer une exception. 4 import javax.swing.*; 6 class ExceptionA extends Exception {} 7 8 public class Demo { 9 10 public static void main( String args[] ) 11 { 12 try { 13 methodequelconque(); 14 } 1 catch( Exception e ) { 16 JOptionPane.showMessageDialog( 17 null, "Gérée dans main: " + e, "Exception", 18 JOptionPane.INFORMATION_MESSAGE ); 19 } 20 21 System.exit( 0 );

22 } 23 24 public static void methodequelconque() throws Exception 2 { 26 try { 27 methodequelconque2(); 28 } 29 catch( ExceptionA e ) { 30 // Ne capture pas Exception, mais seulement ExceptionA. 31 JOptionPane.showMessageDialog( 32 null, "Handled execeptiona in methodequelconque: " + e, "Exception", 33 JOptionPane.INFORMATION_MESSAGE ); 34 } 3 } 36 37 public static void methodequelconque2() throws Exception 38 { throw new Exception(); } 39 }