Les programmeurs Java sont familiers avec ce concept. L'idée est
d'encapsuler du “code à problème” dans une section. Si ce code se
déroule mal, une exception est levée et la procédure associée sera
exécutée:
try {
// code à problème
}
catch (identifiant de l'exception) {
// procédure associée
}
Il est possible d'associer plusieurs procédures (plusieurs catch) à un try dans le cas où le code critique peut lever plusieurs exceptions différentes.
Chaque
exception étant un objet, un certain nombre de méthodes ont été mise
dans la définition de la classe afin de “pister” l'exception :
- getMessage() : retourne la chaîne de caractère définie dansle constructeur,
- getCode() : donne le code de l'exception passé au constructeur,
- getFile() : donne le nom (avec chemin complet) du fichier dans lequel s'est produite l'exception,
- getLine() : retourne le numéro de la ligne où s'est produite l'exception,
- getTrace()/getTraceAsString()
: permet d'avoir une trace complète, une sorte d'historique de ce qui
s'est passé. GetTrace retourne un tableau, getTraceAsString, idem mais
sous forme de chaînes de caractères.
try {
...
throw new Exception ('Aïe, y a un problème', 1);
}
catch (Exception $e) {
print “<br>Exception n°: ”.$e->getCode();
print “<br>Message : ”.$e->getMessage();
print “<br>Dans le fichier : ”.$e->getFile();
print “<br>A la ligne : ”.$e->getLine();
}
Afin de définir ses propres exceptions, il est tout à fait possible de se créer une classe héritée d'
Exception que l'on lèvera par la suite à l'aide de
throw et qu'on récupère à l'aide de
catch.