Vous êtes sur la page 1sur 5

TD1 Les Exceptions

Exercice 1
1. Donner la sortie du programme suivant :
package DS2020
class Test {
public static void main(String[] ARGS) {
try {
System.out .println("AVANT A");
A();
System.out .println("Apres A");
} catch (Exception e) {
System.out .println("MAIN : " + e);
}
finally {
System.out .println("MAIN : FINALLY");
}
}
public static void A() {
try {
System.out .println("AVANT b");
b();
System.out .println("Apres b");
} catch (IndexOutOfBoundsException e) {
System.out .println("A : index hors limite");
}
finally {
System.out .println("A : FINALLY");
}
}
public static void b() {
try {
int TAB[] = new int [4]; TAB[10] = 10 / 3;
}
catch (ArithmeticException e) {
System.out .println("b : Erreur de CALCUL");
}
finally {
System.out .println("b : FINALLY");
}}}

2. Soit la classe ListeNombres comme suit :


class ListeNombres {
private int [] TABLEAU;
private static final int MAX_NB = 10;

1
public void vérifier() {
try {
System.out .println("Début du bloc try");
int i;
for (i=0;i <= MAX_NB ; i++){
if ((TABLEAU[i]/i) == 2) break;
}
if (i < MAX_NB )
System.out .println("Ordre incorrect!");
}catch(……… e) {
}catch(……… e) {
}}}
a) Compléter chacun des blocs catch pour capturer les exceptions possibles
b) Compléter le code pour afficher le message « Fin de vérification » dans tous les
cas de figures.

Excercice 2
Soit le code java suivant :

import java.util.Scanner;
public class TableauSansExce {
public static void main(String[] args)
{ int t[]=new int[3];
int i=0;
String entree,reponse;
Scanner s=new Scanner(System.in);
do
{System.out.println("Donner un nombre entier :");
entree=s.next();
t[i]=Integer.parseInt(entree);
System.out.println("Taper OK pour continuer");
reponse=s.next();
i++;
}while(reponse.equals("OK"));
for(i=0;i<t.length;i++)
{System.out.print("t["+(i+1)+"]="+t[i]+"\t");}}}
Etant donné la hiérarchie des sous-classes de la classe Exception :
o class java.lang.Exception
o class java.lang.ClassNotFoundException
o class java.lang.IOException
o class java.lang.RuntimeException
o class java.lang.IllegalArgumentException
o class java.lang. NumberFormatException
o class java.lang.IndexOutOfBoundsException
o class java.lang.ArrayIndexOutOfBoundsException
o class java.lang.NegativeArraySizeException

2
1. Quels sont les résultats fournis par le programme, ci-dessus, dans les cas
suivants. S’il y a eu des exceptions, il faut préciser leurs classes.

Cas n° 1 Cas n°2 Cas n° 3

Donner un nombre entier : Donner un nombre Donner un nombre entier :


entier :
14 14
17
Taper OK pour continuer Taper OK pour continuer
Taper OK pour
OK OK
continuer
Donner un nombre entier : Donner un nombre entier :
OK
18 10
Donner un nombre
Taper OK pour continuer entier : Taper OK pour continuer

OK 19 OK
Donner un nombre entier : Taper OK pour Donner un nombre entier :
continuer
5 8
Ok
Taper OK pour continuer Taper OK pour continuer

OK OK
Donner un nombre entier Donner un nombre entier
:20 :K01

3. En utilisant les délimiteurs de blocs try et catch, ajouter le code nécessaire pour prévoir
une gestion des exceptions relative aux exceptions levées dans la question 1. Le
traitement des exceptions est réduit à l’affichage du message contenu dans l’objet
exception.

Excercice 3
Soit une description partielle d’une hiérarchie d’exceptions qui pourront être levées durant
des opérations E/S sur des fichiers.

Exception

+----IOException

+-----FileNotFoundException

Soit la méthode « X » qui est supposée ouvrir un fichier à partir de son nom pour lire son
contenu. Sachant que la méthode « X » n’a aucun bloc « try-catch », dites si les options
suivantes sont correctes ou incorrectes, tout en expliquant votre choix de réponse.

3
1) La méthode « X » doit être déclarée comme levant l’exception « IOException » ou bien

« Exception ».

2) La méthode « X » doit être déclarée comme levant l’exception « FileNotFoundException ».

3) N’importe quelle méthode faisant appel à la méthode « X » doit utiliser « try-catch » pour

spécifiquement capturer l’exception « FileNotFoundException ».

4) Aucune précaution n’est nécessaire lors de la déclaration ou l’utilisation de la


méthode «X

Exercice 4

Dites si la proposition et le codes suivant sont corrects ou incorrects, tout en expliquant


votre réponse sachant que la méthode faireLeTraitement() existe déjà :

public void action(int parametre) {


if (parametre==0) throw new RuntimeException("Erreur");
else
faireLeTraitement(); }

Exercice 5
1. Soit le programme suivant (On suppose que la classe Client est déjà définie et
qu’elle n’a aucun constructeur) :

Client[] t = new Client [4] ;


t[0]=new Client ();

t[1]=new Client ();


t[2]=new Client ();

for (int i=0 ;i<t.length ;i++){ System.out.println(t.toString()) ; }


a) Quelles sont les erreurs éventuelles qui seraient émises lors de la
compilation ou de l’exécution de ce programme ?
b) Quels sont les messages envoyés et les types des exceptions levées (à
peu près, on ne vous demande pas les noms au caractère près
évidemment) (1.5 Points)

4
2. Soient la classe Date suivante :

class Date {
int jour; int mois; int annee;

Date(int j,int m, int a)


{ jour = j; mois = m; annee = a; }

}
Modifiez le constructeur de cette classe de manière à ce qu'il lève et
propage une nouvelle exception nommée DateException dans le cas où
le jour ou le mois ou l'année ne correspondent pas à une date valide (on
supposera que les mois ont tous 30 jours) (1.5 Points)

Vous aimerez peut-être aussi