Travail la maison
Gestion des exceptions en JAVA
Exercice n 1 :
Soit les deux classes d'exception suivantes :
class Exc1 extends RuntimeException { .... }
class Exc2 extends IOException { .... }
Soit la classe suivante :
public class TestException {
public void f1(){throw new Exc1(); }
public void f2(){throw new Exc2(); }
.....
}
1) Expliquer pourquoi f1() se compile sans probl me, tandis qu'une erreur de
compilation se produit lors de l'analyse de f2() ?
2) Proposer une solution pour r soudre ce probl me de compilation.
Advertisement
Soient maintenant les classes d'exception suivantes :
class Exc3 extends Exception { ... }
class Exc31 extends Exc3 { ... }
class Exc311 extends Exc31 { ... }
class Exc32 extends Exc3 { ... }
class Exc321 extends Exc32 { ... }
Et soit le programme suivant :
public class TestException {
public void f3() throws Exc3 {
System.out.println("debut\_f3");
try {
f4();
}
catch(Exc31 e) {System.out.println(e.getClass().getName());}
finally {System.out.println("finally\_f3");}
Advertisement
System.out.println("suite\_f3");
}
public void f4() throws Exc3 {
System.out.println("debut\_f4");
try {
f5();
}
catch(Exc321 e){System.out.println(e.getClass().getName());}
catch(Exc32 e){System.out.println(e.getClass().getName());}
finally {System.out.println("finally\_f4");}
System.out.println("suite\_f4");
}
public void f5() throws Exc3 {
System.out.println("debut\_f5");
Exc3 e = new .......... ;
Advertisement
throw e; }
public static void main(String[] args) throws Exc3 {
TestException t = new TestException();
t.f3();
}
}
3) Indiquez ce qu'affiche le programme suivant si l'exception signal e e est une
instance de :
(cid:0) Exc3
(cid:0) Exc31
(cid:0) Exc311
(cid:0) Exc32
(cid:0) Exc321
Exercice n 2 : L' ge du capitaine
1- crire une m thode getAgeCap() qui demande l' ge du capitaine. Cet ge doit tre
Advertisement
compris entre 18 et 65 ans et doit tre un entier sous peine de lever une
AgeCapException. Vous implementerez cette exception pour qu'elle renvoie une
description explicite du type " ans n'est pas un ge valide". Le
programme devra galement tre en mesure de capturer tout type d'exception autre
que AgeCapException.
2- Dans un premier temps, la m thode getAgeCap() propagera l'exception la
m thode appelante qui la traitera.
3- Modifier le programme pour que ce soit la m thode getAgeCap() qui traite
l'exception.
4- Modifier encore le programme pour que getAgeCap() traite l'exception mais l ve
une seconde exception de type Exception pour signaler la m thode appelante
qu'une erreur s'est produite et que cette derni re comptabilise le nombre d'essais
infructueux et l'affiche. Le programme demandera l' ge du capitaine en boucle
infinie.