IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Servlets/JSP Java Discussion :

[servlet] gestion des listes d'erreurs ?


Sujet :

Servlets/JSP Java

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    175
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2004
    Messages : 175
    Points : 65
    Points
    65
    Par défaut [servlet] gestion des listes d'erreurs ?
    Bonjour

    J'ai une servlet qui peut être bloqué pour un grand nombre de raison et d'erreur. J'ai mis des try/catch comme il faut et pour l'instant dans mes catch je fais un truc du genre

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    catch (Exception e) 
    {
    out.println("AUTRE ERREUR : " + e.getMessage());
    }
    ce que j'aimerais c'est générer une liste ou un tableau des erreurs
    et ne les afficher qu'a la fin de mon traitement avec des

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    out.println("html");
    out.println("body");
    out.println("erreur 1 = " + taberreur[0]);
    ....
    est-ce possible ? si oui comment "stocker les erreurs" pour les réutiliser plus loin ? avec quelle structure de données ? y'en existe t'il des déjà tout établie ?

    merci d'avance !

  2. #2
    Candidat au Club
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Juillet 2004
    Messages : 3
    Points : 3
    Points
    3
    Par défaut
    Salut,

    Dans ton cas je stockerais mes erreurs dans un java.util.Vector.

    Pour l'affichage tu récupère la liste de tes éléments du vector pour les afficher.

    j'espère avoir répondu correctement a ton interrogation.

    A+

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    175
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2004
    Messages : 175
    Points : 65
    Points
    65
    Par défaut
    ok je vais essayer

    mais un doute me taraude

    c'est un code que j'ai repris parfois j'ai des PrintStackError (ou quelquechose du genre, j'ai pas le code sous les yeux) et j'aurais aimé qu'ils passent aussi dans ce vector

    est-ce possible ?

  4. #4
    Expert éminent

    Avatar de christopheJ
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    1 600
    Détails du profil
    Informations personnelles :
    Âge : 49
    Localisation : France, Indre et Loire (Centre)

    Informations forums :
    Inscription : Avril 2004
    Messages : 1 600
    Points : 8 235
    Points
    8 235
    Par défaut
    Généralement j'utilise un ArrayList.
    J'ajoute les Exceptions dedans, et au moment de renvoyer la page (où sur une tache critique) je teste la taille de l'ArrayList. S'il contient un objet je renvoie une page d'erreur où j'affiche les StackTrace des Exceptions.
    Attention c'est valable pendant la réalisation et le débugage, avant le passage en prod, la gestion est changée parce que ca parle pas à l'utilisateur un StackTrace. Il faut mieux le logguer et lui envoyer un message plus clair.

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    175
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2004
    Messages : 175
    Points : 65
    Points
    65
    Par défaut
    ok d'accord... j'avais vaguement commencé comme ca... mais j'ai mis les getMessage dedans... ce qui finalement revenait a creer un buffer...

    pour les StackTrace, je sais pas trop a quoi ca correspond, puisque ce bout de code n'était pas le mien, je l'ai laissé pour pas "tout casser" mais je ne suis jamais tmbé encore sur une erreur "stacktracée"

    merci et je m'attele a cela ce matin !


    EDIT: y'a aussi un détail qui me chiffone, en effet suivant l'erreur j'aurais aimé mettre un message particulier pour chaque type d'exception, comment faire ? il faut que dans mon ArrayList je teste a quel type d'exception elle appartient ?

    par ex :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    catch (TransformerException te) 
    {
    out.pintln("<td width=\"100%\" class=\"libelleTexte\">Erreur de type Transformation "+ te.getMessage()+"</td>");
    }
    ....
    catch (SQLException e)
    {
    out.println("<td width=\"100%\" class=\"libelleTexte\">ERREUR SQL : " + e.getMessage()+"</td>");
    }

  6. #6
    Membre actif Avatar de wace
    Inscrit en
    Septembre 2003
    Messages
    224
    Détails du profil
    Informations forums :
    Inscription : Septembre 2003
    Messages : 224
    Points : 263
    Points
    263
    Par défaut
    Je suis d'accord a peu pres sur tout,

    mais je serais toi je ne ferai pas dans la servlet

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    catch (SQLException e)
    {
    out.println("<td width=\"100%\" class=\"libelleTexte\">ERREUR SQL : " + e.getMessage()+"</td>");
    }
    mais dans une classe metier independante de ta servlet

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    catch (SQLException e)
    {
    throw new MyException("<td width=\"100%\" class=\"libelleTexte\">ERREUR SQL : " + e.getMessage()+"</td>");
    }
    et tu catch ton exception MyException dans ta servlet et dans ta servlet tu fait un sendError avec le contenu de l'exception que tu as catché

  7. #7
    Membre du Club
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    175
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2004
    Messages : 175
    Points : 65
    Points
    65
    Par défaut
    ouah !
    j'ai été laché sur le throw la...

    en fait pour l'instant j'ai suivi les instructions qu'il y avait plus haut :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    ArrayList errorList = new ArrayList();
    ...
    catch (SQLException e)
    {
    errorList.add(e);			
    }
    catch (Exception e) 
    {
    errorList.add(e);			
    }
    puis a la fin je fais

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    for(int i=0;i<errorList.size();i++)
    {
    Object e = errorList.get(i);
    if (e instanceof Exception) 
    {	
    	out.println("erreur1 " + e.getMessage());
    }
    else
    {
    	out.println("erreur2");
    } 
    }
    ce qui pose problème a cause du getMessage()... il faudrait pouvoir caster
    mais je n'y arrive pas

    merci !

    ps: si cette solution est du grand n'importe quoi, vous pouvez le dire aussi !

  8. #8
    Candidat au Club
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Juillet 2004
    Messages : 3
    Points : 3
    Points
    3
    Par défaut
    Salut,

    Je pense, a regarder ton code que tu devrais caster ton retour pour éviter les erreurs.

    Je modifierais ton code de la sorte :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    for(int i=0;i<errorList.size();i++) 
    { 
    Object e = errorList.get(i); 
    if (e instanceof Exception) 
    {    
       out.print("erreur1 " + e.getClass().getName()); // permet de connaître le type l'Exception générée
       out.println(" " + ((Exception)e).getMessage()); 
    } 
    else 
    { 
       out.println("erreur2 "+e.getClass().getName()); 
    } 
    }
    C'est a tester bien sur, mais j'espère que ça t'aideras

    A+

  9. #9
    Membre du Club
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    175
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2004
    Messages : 175
    Points : 65
    Points
    65
    Par défaut
    nicek chrome !!! merci

    ps: j'ai pas utilisé le getClass getName... c'est pour un affichage "user" donc ils s'en "battent" un peu

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 3
    Dernier message: 06/11/2007, 20h15
  2. Réponses: 2
    Dernier message: 13/10/2006, 00h36
  3. [GUI] Gestion des messages d'erreurs
    Par agent007se dans le forum C++
    Réponses: 11
    Dernier message: 28/07/2006, 21h52
  4. gestion des messages d'erreurs
    Par keibenoit dans le forum Access
    Réponses: 2
    Dernier message: 31/05/2006, 15h49
  5. Question pas difficile sur la gestion des listes dynamiques
    Par mulbek dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 12/04/2006, 14h57

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo