Exception
Résolu
remousse
Messages postés
299
Date d'inscription
Statut
Membre
Dernière intervention
-
KX Messages postés 16761 Date d'inscription Statut Modérateur Dernière intervention -
KX Messages postés 16761 Date d'inscription Statut Modérateur Dernière intervention -
Bonjour,
J'ai une méthode Java qui throws une exception. A l'intérieur de celle-ci j'ai un bloc try catch.
J'aimerai que mon exécution puisse continue même si l'exception est rencontrée.
Voici mon code :
En fait dans mon try si j'ai une MyException j'aimerai que l'exécution continue afin de faire le setCode(1).
Or cela ne fonctionne pas et le traitement s'arrête. Cela est surement du au throws mais je ne peux pas le retirer.
Avez-vous des idées ?
Par avance merci.
J'ai une méthode Java qui throws une exception. A l'intérieur de celle-ci j'ai un bloc try catch.
J'aimerai que mon exécution puisse continue même si l'exception est rencontrée.
Voici mon code :
public MaClasse getInfo(final Requete request) throws MyException { final List<Test> list = request.getListe(); for (final Test test : list) { do = false; appel = false; if (do) { try { ...... } catch (final MyException e) { appel = true; LOG.fatal("", e); } if (appel) { setCode(1); } } } ........ }
En fait dans mon try si j'ai une MyException j'aimerai que l'exécution continue afin de faire le setCode(1).
Or cela ne fonctionne pas et le traitement s'arrête. Cela est surement du au throws mais je ne peux pas le retirer.
Avez-vous des idées ?
Par avance merci.
A voir également:
- Exception
- Appliquez à tous les paragraphes du document à télécharger, à l’exception des titres et des sous-titres, la mise en forme suivante : - Guide
- A java exception has occurred - Forum Minecraft
- Une exception non gérée s'est produite dans votre application - Forum Word
- Erreur d'application : une exception côté client s'est produite (consultez la console du navigateur pour plus d'informations). - Forum Google Chrome
- Erreur d'application - Windows 11
2 réponses
c'est ton LOG.fatal("", e); ou ton code setCode(1)
qui doit générer une MyException,
vérifie que ton LOG.fatal("", e); se fait comme il faut
qui doit générer une MyException,
vérifie que ton LOG.fatal("", e); se fait comme il faut
Il suffit de faire un try/catch autour du LOG.fatal, voire de carrément l'enlever s'il ne sert à rient, pour éviter d'avoir une exception dans le traitement de l'exception...
Remarque : "do" ne peux pas être un nom de variable, c'est un mot réservé du langage. Et si tu fais immédiatement se suivre une déclaration "do2=false" et "if(do2)" il n'y a aucune chance de rentrer dans le if....
De plus, si la seule utilité de "appel" est de faire ton traitement "setCode(1);" quand tu n'as pas eu d'exception, alors il vaut mieux mettre ton "setCode(1);" à la fin du try, vu que si il y a une exception il passera directement sur le catch.
Enfin, dernière remarque, à part si tu as besoin de "list" dans ton traitement, tu peux directement mettre ton "getListe" dans la boucle for, ça évite là encore une variable inutile.
Remarque : "do" ne peux pas être un nom de variable, c'est un mot réservé du langage. Et si tu fais immédiatement se suivre une déclaration "do2=false" et "if(do2)" il n'y a aucune chance de rentrer dans le if....
De plus, si la seule utilité de "appel" est de faire ton traitement "setCode(1);" quand tu n'as pas eu d'exception, alors il vaut mieux mettre ton "setCode(1);" à la fin du try, vu que si il y a une exception il passera directement sur le catch.
Enfin, dernière remarque, à part si tu as besoin de "list" dans ton traitement, tu peux directement mettre ton "getListe" dans la boucle for, ça évite là encore une variable inutile.
public MaClasse getInfo(final Requete request) // throws MyException { //final List<Test> list = request.getListe(); //for (final Test test : list) for (final Test test : request.getListe()) { //do2 = false; //appel = false; // if (do2) //{ try { // ... setCode(1); } catch (final MyException e) { //appel = true; try { LOG.fatal("", e); } catch (Throwable t) { System.err.println(t); } } //if (appel) //{ // setCode(1); //} //} } }