Gestion et levée dexception
Une exception est un message envoyé par une méthode à une autre méthode. La méthode qui la reçoit a le choix de soccuper du message (le gérer) ou de le retransmettre. Mais elle ne peut pas lignorer. On lève une exception à laide de throw. On gère une exception à laide de try/catch. Si une Exception est levée lexécution normale cesse et lenvoie du message commence.
Gestion et levée dexception Une méthode qui lève une exception doit lannoncer dans son en-tête formelle à laide de throws suivi de(s) exception(s) qui peuvent être levées. Exemple : public int division(int a, int b) throws DivisionZeroException
Gestion et levée dexception En java une exception est une classe. La classe de base de la hiérarchie des exceptions est la classe java.lang.Exception.
Gestion et levée dexception Retransmettre une exception. –On retransmet une exception la plupart du temps lorsquon ne veut pas la gérer. –Pour retransmettre une exception quune méthode peut lever, il suffit de réécrire dans lentête de notre méthode throws et la liste des exceptions.
Gestion et levée dexception Exemple : public class Classe1{ public void methode1() throws Exception{... } } public class Classe2{ public int methode2(){ Classe1 objet = new Classe1(); objet.methode1(); } } Classe2 ne compilera pas car on ne gère pas lexception et on ne la retransmet pas.
Gestion et levée dexception Exemple : public class Classe1{ public void methode1() throws Exception{... } } public class Classe2{ public int methode2() throws Exception{ Classe1 objet = new Classe1(); objet.methode1(); } } Classe2 compilera maintenant
Gestion et levée dexception Gérer une exception –Une exception est gérée dans un bloc try/catch(). –Il peut y avoir plusieurs catch pour un try –On peut ajouter un bloc finally qui sera toujours exécuté, quil y ait exception ou non. Forme générale : try{ code à exécuter } catch(Exception1 e){ code à exécuter } catch(Exception2 e){ code à exécuter }... finally{ code à exécuter } }
Gestion et levée dexception Java tente dexécuter le code et si une Exception est levée, il fait le tour des catch pour exécuter le code associé à lexception. try{... } catch(ArithmeticException e){ System.out.print(« Une exception a été levée »); catch(ArrayIndexOutOfBoundsException e){... }
Gestion et levée dexception Les exceptions de la classe RuntimeException et des ses sous- classes, nont pas à être gérées explicitement. Par exemple la classe ArrayIndexOutOfBoundsException est une sous classe de RuntimeException. Il nest pas nécessaire dannoncer que votre méthode peut lancer cette exception et vous nêtes pas obligé de la gérer. Une exception non gérée est propagée de méthode appelante en méthode appelante jusquà la console daffichage.
Gestion et levée dexception Exemple : main() appelle méthode1() methode1() appelle methode2() methode2() appelle methode3() methode3() appelle methode4() methode4() lève une exception et lenvoi à methode3() methode3() ne la gère pas et lenvoi à méthode2() methode2() ne la gère pas et lenvoi à méthode1() methode1() ne la gère pas et lenvoi à main() main() ne la gère pas, le message est affiché à la console
FIN