2.Programmation orientée objet
2.5.Lever des exceptions
Alors qu'avec un language procédurale, la gestion des erreurs se fait généralement via les valeurs retour (ex: 0 ou true pour signaler qu'il n'y a pas d'erreur, une valeur non nulle ou false pour signaler une erreur). En programmation orientée objet, un autre mécanisme peut être mis en place: les exceptions.
Une méthode qui rencontre un cas d'erreur ne va pas retourner une valeur particulière mais lever une exception. C'est à dire générer un objet de type (de base) Exception que le code appelant devra nécessairement (dans la majeure partie des cas) traiter afin que l'exécution du code ne s'arrête pas brutalement.
Le mot clé pour lever une exception est généralement throw, ce qui donne le type de code suivant
Certains langages (comme Java) imposent de préciser, dans la déclaration de la méthode, la liste des exceptions qui peuvent être levés. Ceci se fait via le mot clé throws comme suit
Remarques:
|
classe MaClasse { methode maMethode(parametre1) { si (erreur) { // une erreur detectee throw new monException(msg); } } } |
classe MaClasse { methode maMethode(parametre1) throws monException { si (erreur) { // une erreur detectee throw new monException(msg); } } } |
Remarques:
|
2.6.Gérer les exceptions
Comme nous l'avons dit, il convient alors au code appelant de gérer les cas d'exception. Pour cela, les appels aux méthodes susceptibles de lever des exceptions doivent être intégrés dans un bloc "essayer"..."gérer l'exception". Ou plus concrètement un bloc try...catch. Comme dans l'exemple suivant:
La variable e de l'exemple est alors l'objet de type de base Exception généré par la méthode.
try { voiture1.donnerPrixCarteGrise(); // appel type java } catch (monException e) { // la methode a leve l'exception e } |

