
La gestion des exceptions Lev´ee d’une exception : la clause throw
Lev´ee d’une exception
Exemple : d´epiler une pile vide
public class Pile{
private Object [] tabVal;
private int indexSommet;
...
public Object depiler() throws Exception{
Object valeur;
if (this.estVide())
throw new Exception("pile vide");
valeur = this.tabVal[this.indexSommet];
this.indexSommet--;
return (valeur);
}
...
La m´ethode signale qu’elle est susceptible de lever une exception.
D´epartement R&T Programmation Java Avanc´ee 16 novembre 2015 5 / 74
La gestion des exceptions Lev´ee d’une exception : la clause throw
Lev´ee d’une exception
Si une m´ethode ne peut s’ex´ecuter
Si elle l`eve une exception
1elle cr´ee un objet (ici de classe Exception), lui confie un message, puis
le lance comme une bouteille `a la mer.
2on quitte imm´ediatement la m´ethode : la fin de son code n’est donc
pas ex´ecut´ee.
Si elle ne l`eve pas d’exception, la m´ethode se termine normalement.
D´epartement R&T Programmation Java Avanc´ee 16 novembre 2015 6 / 74
La gestion des exceptions Appel d’une m´ethode levant une exception : clause try / catch
Appel d’une m´ethode levant une exception
Objectif : ´eviter que le programme ne soit interrompu
1appel d’une m´ethode susceptible de lever une exception `a l’int´erieur
d’un bloc try.
2r´ecup´eration de cette exception dans un bloc catch dans lequel on a
pr´evu un traitement appropri´e.
Exemple
...
try{
...
Object aux = p.depiler();
...
} catch(Exception e){
// traitement de l’exception
System.out.println(e);
}
...
D´epartement R&T Programmation Java Avanc´ee 16 novembre 2015 7 / 74
La gestion des exceptions Appel d’une m´ethode levant une exception : clause try / catch
Appel d’une m´ethode levant une exception
Si la m´ethode appel´ee l`eve une exception, on quitte le bloc try et
l’exception est intercept´ee dans le bloc catch dont le code est alors
ex´ecut´e, pr´ecisant les actions `a effectuer.
Si la m´ethode appel´ee ne l`eve pas d’exception, le bloc try se termine
et on ne passe pas dans le bloc catch.
Dans tous les cas, le programme se poursuit `a l’instruction suivant le
bloc catch.
D´epartement R&T Programmation Java Avanc´ee 16 novembre 2015 8 / 74