Exercice Java : Redéclenchement et finally


Reviewed by:
Rating:
5
On February 28, 2013
Last modified:February 28, 2013

Summary:

Exercice Java : Redéclenchement et finally

Exercice java traite le  sujet suivant:

Redéclenchement et finally

Examinons ce petit Exercice java:



Quels résultats fournit ce programme ?

class Except extends Exception {}
public class FinReth
{ public static void f(int n) throws Except
{ try
{ if (n!=1) throw new Except () ;
}
catch (Except e)
{ System.out.println ("catch dans f - n = " + n) ;
throw e ;
}
finally
{ System.out.println ("dans finally de f - n = " + n) ;
}
}

public static void main (String args[])
{ int n=0 ;
try
{ for (n=1 ; n<5 ; n++) f(n) ;
}
catch (Except e)
{ System.out.println ("catch dans main - n = " + n) ;
}
finally
{ System.out.println ("dans finally de main - n = " + n) ;
}
}
}

La boucle for de la méthode main effectue théoriquement cinq appels de f. Le premier (n=1) ne provoque aucune  exception dans f, et il conduit à l’exécution du bloc finally associé au bloc try de f. Le deuxième (n=2) provoque une  exception dans f qui est traitée par le bloc catch correspondant, lequel relance à nouveau une exception ; avant qu’on ne lui cherche un gestionnaire, on exécute le bloc finally associé au bloc try. Puis on cherche un gestionnaire approprié dans un bloc try englobant, c’est-à-dire ici celui du main. On exécute donc le bloc catch correspondant, puis le bloc  finally associé. Comme cette exception met fin à l’exécution du bloc try de main, le programme s’interrompt.
En définitive, on obtient ces résultats :

dans finally de f - n = 1
catch dans f - n = 2
dans finally de f - n = 2
catch dans main - n = 2
dans finally de main - n = 2

Leave a Reply

Your email address will not be published. Required fields are marked *


*

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>