Java Throws
Résolu/Fermé
Glory8
Messages postés
9
Date d'inscription
lundi 2 mai 2016
Statut
Membre
Dernière intervention
4 mai 2016
-
3 mai 2016 à 13:05
Skymer Messages postés 477 Date d'inscription vendredi 6 décembre 2013 Statut Membre Dernière intervention 1 novembre 2018 - 4 mai 2016 à 20:49
Skymer Messages postés 477 Date d'inscription vendredi 6 décembre 2013 Statut Membre Dernière intervention 1 novembre 2018 - 4 mai 2016 à 20:49
A voir également:
- Java Throws
- Waptrick java football - Télécharger - Jeux vidéo
- Jeux java itel football - Télécharger - Jeux vidéo
- Java apk - Télécharger - Langages
- Jeux java itel 5360 ✓ - Forum Jeux vidéo
- Télécharger jeux java gameloft gratuit - Forum Mobile
3 réponses
choubaka
Messages postés
39404
Date d'inscription
jeudi 4 avril 2002
Statut
Modérateur
Dernière intervention
21 novembre 2024
2 102
3 mai 2016 à 13:47
3 mai 2016 à 13:47
Bonjour
Throws permet de traiter une exception non pas dans la méthode où elle se produit, mais dans la méthode appelante.
Throws permet de traiter une exception non pas dans la méthode où elle se produit, mais dans la méthode appelante.
KX
Messages postés
16752
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
31 août 2024
3 019
3 mai 2016 à 21:24
3 mai 2016 à 21:24
Bonjour,
C'est bien de parler des exceptions, mais il y a plusieurs cas, et il n'y a pas que ça. Alors reprenons :
1) throw, throws et try/catch/finally sont liés à la classe Throwable
Exemple :
2) On distingue deux comportements : checked et unchecked
2a) Tous les Throwable checked doivent obligatoirement être traités par un try/catch ou par un throws
2b) Les Throwable unchecked peuvent éventuellement être traités par un try/catch, le throws est dans tout les cas facultatif (et superflue ?)
Remarque : même s'il est possible de les traiter, il est généralement déconseillé de traiter les Error ou les Throwable directement.
3) L'arborescence de Throwable est la suivante :
Throwable extends Object → checked
Error extends Throwable → unchecked
Exception extends Throwable → checked
RuntimeException extends Exception → unchecked
https://docs.oracle.com/javase/8/docs/api/java/lang/Throwable.html
https://docs.oracle.com/javase/8/docs/api/java/lang/Error.html
https://docs.oracle.com/javase/8/docs/api/java/lang/Exception.html
https://docs.oracle.com/javase/8/docs/api/java/lang/RuntimeException.html
4) Exemples :
4a) Un NullPointerException extends RuntimeException est unchecked, donc il n'est pas obligatoire de le traiter, mais ça peut servir.
https://docs.oracle.com/javase/8/docs/api/java/lang/NullPointerException.html
4b) Une IOException extends Exception est checked, donc tout traitement qui fera une IOException devra être traité soit par un try/catch, soit par un throws.
https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html
4c) Un OutOfMemoryError extends Error est unchecked, donc il n'est pas obligatoire de le traiter et en général ce sera une mauvaise idée de le faire (ex: s'il n'y a plus de mémoire, c'est mort...)
https://docs.oracle.com/javase/8/docs/api/java/lang/OutOfMemoryError.html
5) L'appel d'une méthode qui a un throws se comporte de la même manière que si elle appelait directement le throw elle même.
Exemple :
C'est pareil que :
6) On peut utiliser try/finally sans catch, dans ce cas l'exception reste toujours à traiter (c'est le catch qui compte).
Il y a encore quelques subtilités, comme le try-with-resources par exemple, mais tout est dans la documentation :
https://docs.oracle.com/javase/tutorial/essential/exceptions/index.html
Le mieux est encore de pratiquer et voir avec quelques exemples ce que l'on peut faire et ce que l'on ne peut pas faire...
Ne pas oublier de regarder la documentation des Exception pour savoir si elles étendent RuntimeException ou pas.
C'est bien de parler des exceptions, mais il y a plusieurs cas, et il n'y a pas que ça. Alors reprenons :
1) throw, throws et try/catch/finally sont liés à la classe Throwable
Exemple :
void f() throws Throwable { try { // ... if (...) { throw new Throwable(); } // ... } catch (Throwable t) { // ... } finally { // ... } }
2) On distingue deux comportements : checked et unchecked
2a) Tous les Throwable checked doivent obligatoirement être traités par un try/catch ou par un throws
2b) Les Throwable unchecked peuvent éventuellement être traités par un try/catch, le throws est dans tout les cas facultatif (et superflue ?)
Remarque : même s'il est possible de les traiter, il est généralement déconseillé de traiter les Error ou les Throwable directement.
3) L'arborescence de Throwable est la suivante :
Throwable extends Object → checked
Error extends Throwable → unchecked
Exception extends Throwable → checked
RuntimeException extends Exception → unchecked
https://docs.oracle.com/javase/8/docs/api/java/lang/Throwable.html
https://docs.oracle.com/javase/8/docs/api/java/lang/Error.html
https://docs.oracle.com/javase/8/docs/api/java/lang/Exception.html
https://docs.oracle.com/javase/8/docs/api/java/lang/RuntimeException.html
4) Exemples :
4a) Un NullPointerException extends RuntimeException est unchecked, donc il n'est pas obligatoire de le traiter, mais ça peut servir.
https://docs.oracle.com/javase/8/docs/api/java/lang/NullPointerException.html
4b) Une IOException extends Exception est checked, donc tout traitement qui fera une IOException devra être traité soit par un try/catch, soit par un throws.
https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html
4c) Un OutOfMemoryError extends Error est unchecked, donc il n'est pas obligatoire de le traiter et en général ce sera une mauvaise idée de le faire (ex: s'il n'y a plus de mémoire, c'est mort...)
https://docs.oracle.com/javase/8/docs/api/java/lang/OutOfMemoryError.html
5) L'appel d'une méthode qui a un throws se comporte de la même manière que si elle appelait directement le throw elle même.
Exemple :
void f() throws Exception { throw new Exception(); } void g() { try { f(); } catch (Exception e) { } }
C'est pareil que :
void f() { } void g() { try { throw new Exception(); } catch (Exception e) { } }
6) On peut utiliser try/finally sans catch, dans ce cas l'exception reste toujours à traiter (c'est le catch qui compte).
Il y a encore quelques subtilités, comme le try-with-resources par exemple, mais tout est dans la documentation :
https://docs.oracle.com/javase/tutorial/essential/exceptions/index.html
Le mieux est encore de pratiquer et voir avec quelques exemples ce que l'on peut faire et ce que l'on ne peut pas faire...
Ne pas oublier de regarder la documentation des Exception pour savoir si elles étendent RuntimeException ou pas.
Glory8
Messages postés
9
Date d'inscription
lundi 2 mai 2016
Statut
Membre
Dernière intervention
4 mai 2016
4 mai 2016 à 00:19
4 mai 2016 à 00:19
Merci pour votre réponse :)
Skymer
Messages postés
477
Date d'inscription
vendredi 6 décembre 2013
Statut
Membre
Dernière intervention
1 novembre 2018
75
4 mai 2016 à 20:49
4 mai 2016 à 20:49
Bonjour, throws, signifie que l'on devra entouré d'un bloc try/catch une méthode à risque exemple :
public void exCCM()throws monExeption/*Indique que l’exception est à risque*/{ //code... if (i == 2){ throw monExeption //lancement de l’exception }
3 mai 2016 à 13:48
Merci pour votre réponse rapide, je peu donc eviter de faire un appel a un try/catch si je met un throws dans la méthode qui contient le throw ?
Modifié par choubaka le 3/05/2016 à 13:51
Chouba, Bibapeloula / Mon métier est tellement secret que je ne sais même pas ce que je fais.
3 mai 2016 à 14:01
les programmes suivants comportes des erreurs, trouver ces erreurs et les expliquer :
public void m1() {
f();
}
public int f() throws Exception {
throw new Exception();
}
2eme programme :
public void m3(){
try{
}
catch{Exception e){
}
catch (NullPointerException e){
}
}
3eme programme :
public void m4(){
throw new CheckedException();
}
class CheckedException extends Exception {
public CheckedException() {
super();
}
}
4eme programme :
public void m6(){
f();
}
public int f() {
throw new RuntimeException();
}
3 mai 2016 à 14:06
https://java.developpez.com/livres-collaboratifs/javaenfants/?page=erreurs-exceptions
ça répondra à tes questions
3 mai 2016 à 14:34