Gestion des exceptions en JAVA

Computer Science - Java Programming · notes

Voir tous les documents en programmation

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.

Publicité

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");}

Publicité

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 .......... ;

Publicité

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

Publicité

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.