Le traitement des erreursComment traiter les erreurs (“´ev`enements inattendus”)dans le cadre du d´eveloppement logiciel?– Ne pas traiter du tout. Au mieux, un arrˆet brusque etsouvent incompr´ehensible se produit. Au pire, l’erreurpasse inaper¸cue mais d´eclenche en aval une catas-trophe (mauvais comportement du programme, pro-duction de r´esultats faux non signal´es,...)– Corriger l’erreur localement n’a pas toujours un sens :le traitement de l’erreur peut d´ependre du contextedans lequel elle se produit. Le composant dans lequelonpeutd´etecterl’erreurn’estpasn´ecessairementceluiqui sait comment la traiter. Exemple : l’affichage d’unmessage d’erreur n’a pas de sens dans un contextegraphique.Certains langages (Ada, Java,...) ont ainsi mis en placeun m´ecanisme propre au traitement des ´ev`enementsexceptionnels.MIAGE&GMIFC Les exceptions - 1Principes g´en´eraux.Le d´eclenchement d’une exception est un m´ecanisme quimodifie le flot normal d’´ex´ecution du programme (sortiebrutale des boucles et des s´equences, terminaison desm´ethodes sans fournir de r´esultat,...)Le controleˆ est rendu `a l’entit´e utilisatrice en lui notifiantl’exception. Cette entit´e peut alors soit propager l’excep-tion,soitlastoppereteffectueruntraitementparticulier.Une exception qui n’est trait´ee `a aucun niveau d´eclenchel’arrˆet du programme.L’exception est porteuse d’informations sur la nature etla cause de l’´ev`enement qui vient de se produire.MIAGE&GMIFC Les ...
Commenttraiterleserreurs(“e´ve`nementsinattendus”) danslecadredud´eveloppementlogiciel? –Nepastraiterdutout.Aumieux,unarreˆtbrusqueet souventincompre´hensibleseproduit.Aupire,l’erreur passeinaper¸cuemaisd´eclencheenavalunecatas-trophe (mauvais comportement du programme, pro-ductionder´esultatsfauxnonsignale´s,...) – Corriger l’erreur localement n’a pas toujours un sens : letraitementdel’erreurpeutd´ependreducontexte dans lequel elle se produit. Le composant dans lequel onpeutd´etecterl’erreurn’estpasne´cessairementcelui qui sait comment la traiter. Exemple : l’affichage d’un message d’erreur n’a pas de sens dans un contexte graphique. Certains langages (Ada, Java,...) ont ainsi mis en place unm´ecanismepropreautraitementdese´v`enements exceptionnels.
Lecontrˆoleestrendu`al’entite´utilisatriceenluinotifiant l’exception.Cetteentite´peutalorssoitpropagerl’excep-tion, soit la stopper et effectuer un traitement particulier. Uneexceptionquin’esttrait´ee`aaucunniveaude´clenche l’arrˆetduprogramme.
L’exception est porteuse d’informations sur la nature et lacausedel’e´v`enementquivientdeseproduire.
MIAGE & GMI FC
Les exceptions - 2
Propagationd’uneexceptionnontrait´ee.
MIAGE & GMI FC
Les exceptions - 3
R´ecupe´rationd’exception
Il faut –D´efinirlazonedecodedanslaquelleonveutde´tecter et traiter les exceptions. –Indiquerlestypesd’exceptionsquel’onveutr´ecup´erer etpourchacund’euxletraitement`aeffectuer. Lecodesitu´edanslasectionestinterrompul`aou` l’exceptionsede´clenche(lesinstructionsquisuiventne sontPASexe´cut´ees).Letraitementdel’exceptionest effectue´,puisl’exe´cutionreprendimme´diatementapr`es lezoneded´etection.
MIAGE & GMI FC
Les exceptions - 4
Propagation et traitement
MIAGE & GMI FC
Les exceptions - 5
Les exceptions en Java
En Java, une exception est un objet. La propaga-tion d’une exception implique la transmission d’un ob-jetquipeutporterdesinformationsparticuli`eressur l’´eve`nementquivientdeseproduire.
Javad´efinitdesclassesparticuli`erespourrepre´senter les exceptions. Ces classes sont toutes des sous-classes deThrowableern´dealtee´engException. Voici la hi´erarchiedesclassesd’exception:
Division par 0, par exemple Tentatived’acc´edera`un objetparuner´ef´erence nulle. Adressage hors des bornes d’un tableau Erreur de conversion de typer´ef´erence.
Les exceptions - 7
D´eclenchementd’exception(2)
Onpeutaussid´eclenchervolontairementuneexception grace`al’instructionthrowsuivi d’un objet porteur de l’exception.