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 !
Examinons ce petit Exercice java:
Que fait ce programme ?
class Positif
{ public Positif (int n) throws ErrConst
{ if (n<=0) throw new ErrConst() ;
}
}
class ErrConst extends Exception
{}
public class TstPos
{ public static void main (String args[])
{ System.out.println ("debut main") ;
boolean ok = false ;
while (!ok)
{ try
{ System.out.print ("donnez un entier positif : ") ;
int n = Clavier.lireInt() ;
Positif ep = new Positif (n) ;
ok = true ;
}
catch (ErrConst e)
{ System.out.println ("*** erreur construction ***") ;
}
}
System.out.println ("fin main") ;
}
}
Dans la boucle while de la méthode main, on lit un nombre entier qu’on transmet au constructeur de Positif. Si la valeur qu’il reçoit n’est pas strictement positive, il déclenche une exception de type ErrConst. Celle-ci est traitée dans le gestionnaire associé au bloc try, lequel se contente d’afficher un message (*** erreur construction ***). Après l’exécution de ce gestionnaire, on passe à l’instruction suivant le bloc try, c’est-à-dire ici au test de poursuite de la boucle while, basée sur la valeur de ok.
On constate que la boucle se poursuit jusqu’à ce que la valeur de n soit effectivement positive. Dans ce cas, en effet, la construction de ep se déroule normalement et l’on exécute l’instruction ok=true. Voici un exemple d’exécution de ce programme, dans lequel on déclenche à deux reprises l’exception ErrConst :
debut main donnez un entier positif : -5 *** erreur construction *** donnez un entier positif : 0 *** erreur construction *** donnez un entier positif : 4 fin main
Voici un autre exemple dans lequel aucune exception n’a été déclenchée :
debut main donnez un entier positif : 5 fin main
Remarque: En général, il n’est pas conseillé d’employer le mécanisme de gestion des exceptions pour contrôler le déroulement d’une boucle comme nous le faisons ici. Cependant, cette démarche pourra s’avérer utile dans quelques rares circonstances, notamment pour lire un fichier séquentiel ; dans ce cas, on se basera sur l’exception EOFException.
Termes de recherche utilisés:
- cour et exercice java telecom
- exercices exception java
