Exercice Java : Cheminement des exceptions

Exercice java traite le  sujet suivant:

Cheminement des exceptions

Lorsqu’une méthode déclenche une exception, on cherche tout d’abord un gestionnaire dans l’éventuel bloc try contenant l’instruction throw correspondante. Si l’on n’en trouve pas ou si aucun bloc try n’est prévu à ce niveau, on poursuit la recherche dans un éventuel bloc associé à l’instruction d’appel dans une méthode appelante, et ainsi de suite. Le gestionnaire est rarement trouvé dans la méthode qui a déclenché l’exception puisque l’un des objectifs fondamentaux du traitement d’exception est précisément de séparer déclenchement et traitement !
Bien qu’intuitifs, les exemples précédents correspondaient bien à une recherche dans un bloc try de l’appelant. Par  exemple, l’exception  ErrConst était traitée non dans un bloc déclenchée par un constructeur de try de ce constructeur, mais dans un bloc qui avait appelé le constructeur. try de la méthode main try Point

Examinons ce petit Exercice java:



Que produit le programme suivant lorsqu’on lui fournit en donnée :

  • la valeur 0,
  • la valeur 1,
  • la valeur 2.
class Except extends Exception
{ public Except (int n) { this.n = n ; }
public int n ;
}
public class Chemin
{ public static void main (String args[])
{ int n ;
System.out.print ("donnez un entier : ") ; n = Clavier.lireInt() ;
try
{ System.out.println ("debut premier bloc try") ;
if (n!=0) throw new Except (n) ;
System.out.println ("fin premier bloc try") ;
}
catch (Except e)
{ System.out.println ("catch 1 - n = " + e.n) ;
}
System.out.println ("suite du programme") ;
try
{ System.out.println ("debut second bloc try") ;
if (n!=1) throw new Except (n) ;
System.out.println ("fin second bloc try") ;
}
catch (Except e)
{ System.out.println ("catch 2 - n = " + e.n) ; System.exit(-1) ;
}
System.out.println ("fin programme") ;
}
}

Ici, il faut simplement savoir que lorsque le gestionnaire d’exception ne comporte pas d’arrêt de l’exécution (ou  d’instruction return), l’exécution se poursuit à l’instruction suivant le dernier gestionnaire associé au bloc try.
En définitive, voici quels seront les trois exemples d’exécution correspondant aux trois réponses proposées :

donnez un entier : 0
debut premier bloc try
fin premier bloc try
suite du programme
debut second bloc try
catch 2 - n = 0
donnez un entier : 1
debut premier bloc try
catch 1 - n = 1
suite du programme
debut second bloc try
fin second bloc try
fin programme
donnez un entier : 2
debut premier bloc try
catch 1 - n = 2
suite du programme
debut second bloc try
catch 2 - 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>