Sequence 7 : Gestion des Exception
Cours : Gestion des Exceptions
Les exceptions représentent le mécanisme de gestion des exceptions. Il se compose d'objets représentant les erreurs et d'un ensemble de trois mots clés qui permettent de détecter et de traiter ces exceptions (try, catch et finally ) mais aussi de les lever ou les propager (throw et throws).
Les mots-clés qui permettent la gestion des exceptions :
-
try{ ... }
délimite un bloc de code dans lequel sont geré les exceptions -
catch{ ... }
délimite un bloc de code qui correspond à l'exception levée. -
throw
: celui-ci permet tout simplement de lever une exception manuellement en instanciant un objet de type Exception (ou un objet hérité).(lever une exception) -
finally{ ... }
un morceau de code est exécuté quoi qu'il arrive, utilisé lorsque vous devez vous assurer d'avoir fermé un fichier, clos votre connexion à une base de données ou un socket (une connexion réseau).
La syntaxe générale de la gestion des exceptions en Java est donc la suivante :
try {
// Block of code to try
}
catch(Exception e) {
// Block of code to handle errors
}
finally{
// Block of code to finally
}
Exercice :
GastonLagaffe
package Classes;
public class GastonLagaffe {
public static void trierCourrierEnRetard(int nbLettres)
{
System.out.print("Quoi, " + nbLettres + " lettre(s) à trier ? ");
try
{
System.out.println("OK, OK, je vais m'y mettre...");
if(nbLettres > 2)
{
throw new Exception("Beaucoup trop de lettres...");
}
System.out.println("Ouf, j'ai fini.");
}
catch (Exception e) {
System.out.println("M'enfin ! " + e.getMessage());
System.out.println("Détails : " + e.toString());
}
System.out.println("Après tout ce travail, une sieste s'impose.");
}
public static void rangerBureau()
{
System.out.println("Ranger mon bureau ? Si tu insistes...");
try {
throw new Exception("Impossible, l'armoire est déjà pleine !");
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public static void faireSignerContrats()
{
try {
System.out.println("Encore ces contrats ? OK, je les imprime...");
imprimerContrats();
System.out.println("A présent une petite signature...");
ajouterSignature();
System.out.println("Fantasio, les contrats sont signés !");
}
catch (Exception e) {
System.out.println("M'enfin ! " + e.getMessage());
}
}
private static void ajouterSignature() {
System.out.println("Signez ici, M'sieur Demesmaeker.");
}
private static void imprimerContrats() throws Exception {
System.out.println("D'abord, mettre en route l'imprimante.");
allumerImprimante();
System.out.println("c'est fait !");
}
private static void allumerImprimante() throws Exception {
System.out.println("Voyons comment allumer cette machine...");
throw new Exception("Mais qui a démonté tout l'intérieur ?");
}
public static void repondreAuTelephone(String appelant) throws ExceptionMenfin, ExceptionBof
{
if(appelant.equals("Mr Boulier"))
{
throw new ExceptionBof("Allô, ici Gaston, j'écoute...");
}
else if(appelant.equals("Prunelle"))
{
throw new ExceptionBof("Pas le temps, je suis dé-bor-dé !");
}
else
{
System.out.println("Allô, ici Gaston, j'écoute");
}
}
public static void appeler(String appelant)
{
System.out.println("Gaston, " + appelant + " au télèphone !");
try
{
repondreAuTelephone(appelant);
}
catch(Exception e)
{
System.out.println("Encore une bonne excuse, j'imagine ?");
System.out.println(e.getMessage());
}
}
public static void commanderFournitures () throws Exception
{
System.out.println("D'abord, réchauffer ma marue aux fraises...");
System.out.println("Heuresement, j'ai réparé mon réchaud à gaz.");
throw new Exception("Vite, où est l'extincteur ??");
}
public static void preparerJournal() throws ExceptionMenfin, ExceptionBof
{
System.out.println("Gaston, une commande urgente !");
try
{
commanderFournitures();
}
catch(Exception e)
{
}
System.out.println("Déjà terminé ? Il progresse, ce petit...");
}
public static void preparerCafe(String personne) throws Exception
{
try
{
System.out.println("Un café pour " + personne + " ? OK...");
System.out.println("D'abord, j'allume la cafetière.");
System.out.println("Le café chauffe... C'est prêt !");
if(!personne.equals("Moiselle Jeanne"))
{
System.out.println("J'ai le temps de faire un peu de chimie.");
throw new Exception("Aie, je me suis brûlé !");
}
}
finally
{
System.out.println("J'éteins la cafetière");
}
}
}
main
package Classes;
public class main {
public static void main(String[] args) {
System.out.println("Debout Gaston ! Il faut trier le courrier !");
GastonLagaffe.trierCourrierEnRetard(20);
GastonLagaffe.rangerBureau();
System.out.println("\n");
System.out.println("Gaston, Mr Demesmaeker arrive, faites vite !"); GastonLagaffe.faireSignerContrats();
System.out.println("\n");
GastonLagaffe.appeler("Mr Boulier");
System.out.println("\n");
GastonLagaffe.appeler("Prunelle");
System.out.println("\n");
GastonLagaffe.appeler("Charly");
System.out.println("\n");
System.out.println("Gaston, d'où vient cette odeur ?");
GastonLagaffe.preparerJournal();
System.out.println("\n");
try
{
GastonLagaffe.preparerCafe("Moiselle Jeanne");
GastonLagaffe.preparerCafe("Les \"SLAM\"");
}
catch(Exception e)
{
System.out.println(e.getMessage());
}
}
}
ExceptionMenfin
package Classes;
public class ExceptionMenfin extends Exception {
public ExceptionMenfin(String message)
{
super("M'enfin ! " + message);
}
}
ExceptionBof
package Classes;
public class ExceptionBof extends Exception{
public ExceptionBof(String message)
{
super("Bof ! " + message);
}
}