Detail de l'erreur servlet

profiter Messages postés 205 Date d'inscription mercredi 15 juin 2011 Statut Membre Dernière intervention 15 mars 2013 - 7 mars 2012 à 18:38
cs_Julien39 Messages postés 6414 Date d'inscription mardi 8 mars 2005 Statut Modérateur Dernière intervention 29 juillet 2020 - 8 mars 2012 à 08:37
bonjour,
dans ma servlet : j'ai un bloc try catch ou j'ai mis dans le catch :
catch(Exception e){
      out.println("
vous devez saisir des doubles: "+e);
    }

alors il m'afffiche une erreur dans la page web :
type="java">java.lang.ArrayIndexOutOfBoundsException: 2 

alors je veux la trace de l'erreur mais je sais pas comment :
j'ai fais
e.printStackTrace()

mais c'est une erreur : elle ne retourne pas un string
e.getCause()
retourne null

si vous avez une idée




merci d'avance

5 réponses

cs_Julien39 Messages postés 6414 Date d'inscription mardi 8 mars 2005 Statut Modérateur Dernière intervention 29 juillet 2020 371
7 mars 2012 à 19:25
Bonjour,

Je ne suis pas certain de comprendre ta demande : tu veux récupérer la stacktrace dans une chaîne de caractères ?

Si oui :

 public static String getStackTrace(Throwable aThrowable) {
    final Writer result = new StringWriter();
    final PrintWriter printWriter = new PrintWriter(result);
    aThrowable.printStackTrace(printWriter);
    return result.toString();
  }
0
cs_Julien39 Messages postés 6414 Date d'inscription mardi 8 mars 2005 Statut Modérateur Dernière intervention 29 juillet 2020 371
7 mars 2012 à 19:28
Ca, c'est vraiment une très très mauvaise idée :

catch(Exception e){
      out.println("
vous devez saisir des doubles: "+e);
    }


Tu récupères toutes les exceptions et tu affiches vous devez saisir des doubles. Ce n'est peut être pas la bonne erreur.

En plus, pour l'utilisateur, "un double", il ne sait pas ce que c'est : c'est un nombre à virgule, pas un double.
0
cs_Julien39 Messages postés 6414 Date d'inscription mardi 8 mars 2005 Statut Modérateur Dernière intervention 29 juillet 2020 371
7 mars 2012 à 19:29
Normalement, tu ne dois pas catcher les ArrayIndexOutOfBoundsException, tu dois t'arranger dans ton code pour que cette exception ne soit pas levée.

Ce n'est pas un fonctionnement exceptionnel mais une erreur de programmation (RuntimeException si tu connais le concept)
0
profiter Messages postés 205 Date d'inscription mercredi 15 juin 2011 Statut Membre Dernière intervention 15 mars 2013 8
7 mars 2012 à 21:42
merci pour les reponses et conseils
pour le moment puisque je suis encore debutant dans jee (mon troisieme jour now) je me concentre a realiser juste les fonctionnalites demandé

alors, j'ai remplacé dans mon code e par e.getstacktrace(), mais voila l'erreur : qui ma generé :
[Ljava.lang.StackTraceElement;@1c5103b 


en fait j'ai pas bien compris , est ce que je dois ecrire toute la methode que tu m'a donné ou elle est pre-programmé juste l'utiliser comme j'ai fais
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_Julien39 Messages postés 6414 Date d'inscription mardi 8 mars 2005 Statut Modérateur Dernière intervention 29 juillet 2020 371
8 mars 2012 à 08:37
Bonjour,

e.getStackTrace() te retourne un objet dont tu affiches la référence. Si tu veux récupérer le texte associé, il faut que tu utilises la méthode que je t'ai donnée.

Ce n'était peut être pas très habile de l'appeler getStackTrace, renommes la plutôt recupererStackTrace ou un truc du genre.
0
Rejoignez-nous