Académique Documents
Professionnel Documents
Culture Documents
JavaLesExceptions
ILHEMBOUSSAD
USTHB
26/02/2009
ANNEE20082009
1 EXCEPTION
Une exception est un vnement qui se manifeste au cours de l'excution d'un programme et qui va perturber le droulement normal des instructions. Elle peut se produire parce que le programme rencontre une erreur ou un vnement anormal. L'erreur peut tre technique (par exemple un fichier attendu n'est pas prsent) ou mtier (par exemple un processus est lanc avec des arguments invalides). Le principe repose sur l'obligation de prvoir un traitement d'erreur sur les instructions susceptibles de les provoquer. Pour ce faire, il sera ncessaire d'isoler les instructions susceptibles de provoquer des exceptions dans un bloc d'instructions, dit "bloc de try" qui sera suivi de blocs d'instructions, appels "blocs de catch", dans lesquels seront cods les diffrents traitements des diffrentes exceptions.
Exemple :
instructions; try { // Dbut de l'essai instruction1; instruction2; // etc } catch( MonException e) { // Traitement de l'exception e }
Les exceptions en Java instructions try catch pour capturer lexception mot-cl throws pour transfrer lexception au code appelant instruction throw pour lever une exception
1.1
LE BLOC TRY
Toute instruction susceptible de provoquer une erreur devra tre contenu dans un bloc d'instructions de ce type. Ce bloc d'instructions peut contenir autant d'instructions que l'on souhaite, susceptibles ou non de gnrer des exceptions.
ANNEE20082009
ANNEE20082009
les exceptions listes sont propages/transmises la mthode appelante si elles sont leves dans le corps de la mthode traite. Donc une exception peut tre propage jusqu' une mthode appelante qui la capture et la traite. uneMthode() throws ClasseException {
ANNEE20082009
Chaque exception est un objet objet construit lors dun incident (instruction de construction, constructeurs) Hirarchie de classes dexception (pour un traitement group de plusieurs exceptions) Les exceptions cres la main doivent hriter dune classe dexceptions existante (exemple : Exception)
Tout d'abord la classe Error, qui correspond des erreurs assez srieuses qui ont peu de chance d'tre rcupres par une application classique, comme lorsque la VM est court de mmoire par exemple. Nous nous intresserons plutt la sous-classe Exception
getMessage() : retourne une chane de caractres reprsentant le message relatif l'exception, toString() : retourne une courte description de l'exception. Si cette dernire a t cre avec un message d'erreur, le rsultat serait la concatnation du nom de la classe, d'un deux-points suivi d'un espace et d'une chane de caractres provenant de getMessage(),
4
ANNEE20082009
printStackTrace() : retourne la trace de la pile au flux de sortie standard qui est la valeur du champ System.err. La premire ligne de sortie contient le rsultat produit par toString(). Les autres lignes reprsente les donnes au pralable enregistres par la mthode fillInStackTrace(). fillInStackTrace() : Cette mthode enregistre les informations de l'exception courant propos de l'tat courant des piles pour le thread courant.
ANNEE20082009
EXEMPLES
Crer une classe simple dexception Crer une classe avec une mthode f() qui lve lexception et la mthode main qui traite lexception. class ExceptionSimple extends Exception {} public class DemoExceptionSimple { public void f( ) throws ExceptionSimple { System.out.println(" On lve ExceptionSimple dans f()"); throw new ExceptionSimple (); } public static void main(String[] args) { DemoExceptionSimple des = new DemoExceptionSimple (); try { des.f(); } catch(ExceptionSimple e) { System.err.println(" Exception capture ! "); } } }
Exemple 1
Exemple 2 Les classes dexception fournies par Java comportent toujours 2 constructeurs : sans paramtre avec un paramtre de type String pour transmettre un message afficher lorsque lexception est leve
Crer une classe dexception avec les 2 constructeurs Crer une classe avec deux mthodes f() et g() qui lvent cette exception des 2 manires Capturer les exceptions leves par f() et g() dans la mthode main(...)en affichant la pile des appels
ANNEE20082009
Voici quelques exceptions prdfinies dans Java : NullPointerException : accs un champ ou appel de mthode non statique sur un objet valant null. Utilisation de length ou accs une case dun tableau valant null. ArrayIndexOutOfBoundsException : accs une case inexistante dans un tableau. ArrayIndexOutOfBoundsException : accs au ime caractre dune chane de caractres de taille infrieure i. ArrayIndexOutOfBoundsException : cration dun tableau de taille ngative. NumberFormatException : erreur lors de la conversion dune chane de caractres en nombre.