Académique Documents
Professionnel Documents
Culture Documents
Opération
• Java propose en standard ou
le mécanisme de gestion d’exception Méthode
résultat ou exception
normal (erreur)
Exemples d’exceptions de Java 5 6
}
}
}
i++;
Rattraper une exception
System.out.println("done");
}
pour éviter l’arrêt du programme
10 4
20 0
Exception in thread "main" -1
java.lang.ArithmeticException: Exception in thread "main“
/ by zero java.lang.ArrayIndexOutOfBounds
at Main.main(Main.java:7) Exception: 3
at Main.main(Main.java:6)
Capture des exceptions (cas simple) Capture des exceptions (avec propagation)
static void main(String[] args) { 10 static void main(String[] args) { 10
int[] tab = {2, 1, 0, -1}; 20 int[] tab = {2, 1, 0, -1}; 20
2 try { Division par zéro 3 2 try { Division par zéro 3
for (int val : tab) { Done 4 for (int val : tab) { Done 4
1 System.out.println(20/val); 2 int res = division(20,val);
2
} System.out.println(res);
} 3catch(ArithmeticException e) { }
System.out.println( } 3catch(ArithmeticException e) {
"Division par zéro"); System.out.println(
} "Division par zéro");
4 System.out.println("Done"); }
} 4 System.out.println("Done");
}
Lorsqu’une exception survient Bloc try{…} non trouvé dans
1. L’exécution du programme est stoppée là où survient une exception
static int division(int a, la méthode division(). La
int b) { recherche de catch continue
2. On trouve le try responsable de l’appel conduisant à l’exception 1 return a/b; dans la méthode qui a appelé
} la méthode division(), etc.
• englobant directement l’instruction ayant provoqué l’exception
• ou sinon en remontant la chaîne des méthodes appelantes L’exception est propagée dans ce cas
3. Le catch approprié est exécuté pour traiter l’exception à elle remonte la chaîne d’appel jusqu’à trouver un try/catch qui la rattrape
4. Le programme suit son cours à la suite du bloc try/catch exécuté
Le bloc « finally » 11 12
Une méthode peut lancer une exception La méthode doit annoncer (dans sa signature) qu’elle peut
lancer certains types d’exceptions
• ≈ un signalement d’erreur à la place du return
paramètres d’entrée
• Spécification des exceptions lancées par une méthode
• Si une méthode peut lancer une exception, cela doit être indiqué par une
clause throws ClassException après la liste des paramètres de cette
méthode. (Vérifié par le compilateur)
Méthode static int division(int a, int b)
throws Exception, ArithmeticException {
if (a%b != 0) {
résultat ou exception throw new Exception("Division non entière");
}
(return) (throw)
return a/b;
}
• Instruction pour lancer une exception : throw e; à Toutes les exceptions produites sont spécifiées, y compris celles lancées
• e est une instance d’une classe héritant de la classe Throwable dans d’autres méthodes appelées par la méthode.
• Exemple 1 : throw new Exception("Message d’erreur"); à Si plusieurs types d’exceptions peuvent être lancés par une méthode, on
les sépare par des virgules après le throws.
• Exemple 2 : throw new ArithmeticException("Division by 0");
Exemple 15
La classe Exception de Java 16
• De garantir son traitement dans un contexte qualifié de niveau supérieur Entrées-Sorties en Java :
• Le bloc catch{} compatible d’un bloc try{} supérieur dans les appels
Définition d’entrées-sorties 23
Lecture de fichier 24
Énoncé Solution
• Écrire une méthode static int askInt() qui retourne
static
une valeur entière saisie au clavier par l’utilisateur. boolean
• Quand la valeur saisie n’est pas un entier, un message d’erreur doit être int res
InputStr
affiché puis on recommence la saisie. Buffered
while
try
String
res
corre
} catch
Syste
}
}
return
}