Exercice Java : Instruction return dans un gestionnaire

Exercice java traite le  sujet suivant:

Instruction return dans un gestionnaire

Examinons ce petit Exercice java:



Que fournit le programme suivant ?

class Erreur extends Exception
{}
class A
{ public A(int n) throws Erreur
{ if (n==1) throw new Erreur() ;
}
}
public class Chemin2
{ public static void main (String args[])
{ f(true) ;  System.out.println ("apres f(true)") ;
f(false) ; System.out.println ("apres f(false)") ;
}
public static void f(boolean ret)
{ try
{ A a = new A(1) ;
}
catch (Erreur e)
{ System.out.println ("** Dans f - exception Erreur " ) ;
if (ret) return ;
}
System.out.println ("suite f") ;
}
}

Les deux appels de f déclenchent une exception à la construction de a. Toutefois, dans le premier cas, le gestionnaire est amené à exécuter une instruction return, ce qui met fin à l’exécution de f, sans que l’instruction suivant le bloc try  (affichage de suite f)  ne soit exécutée. En revanche, elle l’est bien dans le second cas où le gestionnaire se termine  naturellement, sans qu’aucune instruction return ou exit n’ait été exécutée.

En définitive, le programme fournit les résultats suivants :

** Dans f - exception Erreur
apres f(true)
** Dans f - exception Erreur
suite f
apres f(false)

Speak Your Mind

*


*