Aide sur la gestion des exeptions en java
glennog
Messages postés
293
Date d'inscription
Statut
Membre
Dernière intervention
-
glennog Messages postés 293 Date d'inscription Statut Membre Dernière intervention -
glennog Messages postés 293 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
je suis en train de lire un tuto sur le langage java , et je suis arrivé sur la partie concernant les exceptions , et cela me fatigue un peu depuis un bout de temps ,
j'avais l'habitude de gérer les exceptions lorsque je développais en vb , et j'utilisais très couramment la syntaxe :
sans me soucier du nom de l'exception qui pourrait être générée
mais une fois en java , j'ai lu que lorsqu'on utilise cette syntaxe , l'on doit préciser le type d'exception , mais j'ai une question , j'aimerais savoir s'il n'existe pas une méthode pour connaitre le nom de l'exception qui sera générée automatiquement , car j'ai lu que en envoyant au catch le type d'exception , ( parfois une exception arithmétique , et d'autres cas , c'est des exeptions sur les entrées et sorties , bref , je veux gerer les exceptions , mais comment faire pour savoir quel nom je dois envoyer en paramètre dans mon " catch"
enfin , j'ai aussi vu que l'on pouvait gérer les exeptions en utilisant les syntaxes , " finally " ou encore " throws " mais je ne sais pas , quand est ce que l'on utilise le throws et quand est ce que l'on utilise le finally , pourriez vous m'éclairer
je suis en train de lire un tuto sur le langage java , et je suis arrivé sur la partie concernant les exceptions , et cela me fatigue un peu depuis un bout de temps ,
j'avais l'habitude de gérer les exceptions lorsque je développais en vb , et j'utilisais très couramment la syntaxe :
Try Catch ex As Exception End Try
sans me soucier du nom de l'exception qui pourrait être générée
mais une fois en java , j'ai lu que lorsqu'on utilise cette syntaxe , l'on doit préciser le type d'exception , mais j'ai une question , j'aimerais savoir s'il n'existe pas une méthode pour connaitre le nom de l'exception qui sera générée automatiquement , car j'ai lu que en envoyant au catch le type d'exception , ( parfois une exception arithmétique , et d'autres cas , c'est des exeptions sur les entrées et sorties , bref , je veux gerer les exceptions , mais comment faire pour savoir quel nom je dois envoyer en paramètre dans mon " catch"
enfin , j'ai aussi vu que l'on pouvait gérer les exeptions en utilisant les syntaxes , " finally " ou encore " throws " mais je ne sais pas , quand est ce que l'on utilise le throws et quand est ce que l'on utilise le finally , pourriez vous m'éclairer
A voir également:
- Aide sur la gestion des exeptions en java
- Waptrick java football - Télécharger - Jeux vidéo
- Jeux java itel - Télécharger - Jeux vidéo
- Eclipse java - Télécharger - Langages
- Java apk - Télécharger - Langages
- Waptrick java voiture - Télécharger - Jeux vidéo
2 réponses
Commençons par le finally, il permet d'exécuter un morceau de code qu'il y ait eu exception ou non.
Personnellement, je ne m'en suis jamais servi, je préfère faire comme ça :
Ensuite, il faut savoir que le traitement des exceptions est obligatoire en Java.
Le throws permet d'indiquer qu'on n'a pas géré une exception dans la méthode, et qu'il faudra la gérer dans la méthode qui l'appelle.
Exemple, si la méthode m1 peut générer une Exception, on pourra faire :
Ou alors faire :
Si tu comprend le principe des throws il est plus facile de comprendre comment savoir quel type d'exception il faut gérer : il faut gérer dans un try catch, les exceptions qui apparaissent avec des "throws" dans les méthodes (ce qui est indiqué dans leur documentation)
Avec mon exemple du dessus, m1 génère une Exception donc je dois faire un try/catch ou un throws sur la classe Exception à chaque fois que j'utilise m1.
Un point important à comprendre, c'est que les exceptions héritent les unes des autres. Tu auras une hiérarchie comme ceci :
Lorsque tu traites une IOException par exemple, tu peux donc la traiter directement, ou alors traiter sa classe mère (Exception) ou bien encore la classe mère au dessus (Throwable, qui gère aussi les Error)
À noter : la classe RuntimeException et ses classes filles sont un peu particulières car les exceptions qu'elles génèrent peuvent ne pas être traitées dans le code. Ce sont les seules qui auront des throws mais pour lesquels tu pourras ne pas mettre de try/catch (dans les RuntimeException on retrouve notamment les NullPointerException, ArrayOutOfBoundsException, etc.)
try { // instructions qui peuvent poser problème } catch (Throwable t) { // instruction à effectuer si problème } finally { // instructions à effectuer qu'il y ait problème ou non }
Personnellement, je ne m'en suis jamais servi, je préfère faire comme ça :
try { // instructions qui peuvent poser problème } catch (Throwable t) { // instruction à effectuer si problème } // instructions à effectuer qu'il y ait problème ou non
Ensuite, il faut savoir que le traitement des exceptions est obligatoire en Java.
Le throws permet d'indiquer qu'on n'a pas géré une exception dans la méthode, et qu'il faudra la gérer dans la méthode qui l'appelle.
Exemple, si la méthode m1 peut générer une Exception, on pourra faire :
void m2() { try { m1(); } catch (Exception e) { // traitement de l'exception } } void m3() { m2(); }
Ou alors faire :
void m2() throws Exception { m1(); } void m3() { try { m2(); } catch (Exception e) { // traitement de l'exception } }
Si tu comprend le principe des throws il est plus facile de comprendre comment savoir quel type d'exception il faut gérer : il faut gérer dans un try catch, les exceptions qui apparaissent avec des "throws" dans les méthodes (ce qui est indiqué dans leur documentation)
Avec mon exemple du dessus, m1 génère une Exception donc je dois faire un try/catch ou un throws sur la classe Exception à chaque fois que j'utilise m1.
Un point important à comprendre, c'est que les exceptions héritent les unes des autres. Tu auras une hiérarchie comme ceci :
Object Throwable Error AWTError IOError ... Exception IOException RuntimeException ...
Lorsque tu traites une IOException par exemple, tu peux donc la traiter directement, ou alors traiter sa classe mère (Exception) ou bien encore la classe mère au dessus (Throwable, qui gère aussi les Error)
À noter : la classe RuntimeException et ses classes filles sont un peu particulières car les exceptions qu'elles génèrent peuvent ne pas être traitées dans le code. Ce sont les seules qui auront des throws mais pour lesquels tu pourras ne pas mettre de try/catch (dans les RuntimeException on retrouve notamment les NullPointerException, ArrayOutOfBoundsException, etc.)