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   -
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 :

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.

2 réponses

Chocobo_tofu1 Messages postés 164 Date d'inscription   Statut Membre Dernière intervention   362
 
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
0
KX Messages postés 16761 Date d'inscription   Statut Modérateur Dernière intervention   3 020
 
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.

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);
            //}
        //}
    }
}
0