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

avec Java Discussion :

Traitement basic d'exceptions


Sujet :

avec Java

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    30
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 30
    Points : 14
    Points
    14
    Par défaut Traitement basic d'exceptions
    Salut,

    j'ai un petit soucis pour la gestion d'une exception, et je ne vois pas ce qui cloche !

    J'ai juste une instruction susceptible de lever une exception, donc je l'ai placée dans un bloc "try/catch" où je catch tout type d'exceptions (Exception e).

    Mon but est d'avoir un message d'erreur personnalisé et de cacher toute la trace de l'exception, donc dans mon catch() je ne met qu'un "System.out.println()" par exemple.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    try {
    	context = authenticationWS.login(user.getLogin(),user.getPassword(),"00000");	
    } catch(Exception e) {
    	System.out.println("================= [AuthenticationService] : Erreur inconnue au niveau du webservice. ===============");
    }
    Or, dans ma console, j'ai toute la trace d'erreur qui ressort et ensuite mon message perso.
    Mais je ne veux pas de cette immonde trace d'erreur ^^.

    J'ai toujours procéder de la sorte et là, ça ne fonctionne pas comme ça devrait ... à moins que je me trompe qqpart ?

  2. #2
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 481
    Points : 48 806
    Points
    48 806
    Par défaut
    je suppose que c'est authenticationWs qui imprime l'exception avant de la remonter. -> regarder ce qui se passe là dedans.

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    30
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 30
    Points : 14
    Points
    14
    Par défaut
    Merci tchize_, je me suis dis que ça pouvait effectivement être ça, mais dans ce cas là je suis coincé car je n'est pas la main sur cette méthode, il s'agit d'un webservice que j'appel et les classes me sont fournies sous forme d'une librairie.

    Donc à ton avis, je traite bien l'exception comme il faudrait mais le "pblm" vient de plus haut ?

  4. #4
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 481
    Points : 48 806
    Points
    48 806
    Par défaut
    oui. Maintenant si la trace viens à partir d'un logger en mode debug, il y a probablement moyen de le configurer.

    Attention, si c'est dans la console de ton application, le coté serveur n'a a priori rien à voir, c'est l'implémentation coté client de ton webservice qui logge ce message.

    PS: catch Exception c'est affreux, préfère le catch plus spécifique des exception qui t'intéressent.

  5. #5
    Expert éminent sénior
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Points : 23 190
    Points
    23 190
    Billets dans le blog
    1
    Par défaut
    Salut,


    Il est franchement préférable de ne pas traiter du tout les exceptions que de faire cela !

    • Quel est l'intérêt d'avoir un message "Erreur inconnue" alors qu'on pourrait avoir un message clair et précis sur l'origine exacte de l'exception. Surtout qu'en plus tu catches Exception !!!
    • Tu traites l'exception, mais sans proposer de solution alternative comment gère tu le fait que "context" ne soit pas initialisé ???


    Pour le reste, il faudrait déjà voir quel est l'exception en question... Je crains qu'il ne s'agisse justement d'une NullPointerException !

    a++

  6. #6
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 481
    Points : 48 806
    Points
    48 806
    Par défaut
    adiguba: il mentionne qu'il a la trace de l'erreur avant le message perso

  7. #7
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    30
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 30
    Points : 14
    Points
    14
    Par défaut
    Merci à vous deux pour vos réponses.

    J'ai choisi de ne traiter que "Exception" car j'avais un pblm pour traiter les exceptions spécifiques levées par cette instruction. Pblm résolu donc effectivement je traite maintenant mes exceptions spécifiques et pas uniquement généralistes.

    Ce n'est pas une NullPointerException qui était levé mais une AccessDeniedException (en fait une AccessDeniedException_Exception ....) d'où mon pblm pour la traiter, je ne connaissais pas son nom exact (dur d'utiliser une API sans javadoc ...).

    Niveau solution alternative, si je léve une exception ici, je ne vais pas plus loin dans mon traitement, je n'initialise pas mes autres objets etc ...., j'affiche juste un message d'erreur/info à l'utilisateur. Je ne sais pas si c'est le mieux ...

    Et pour le message d'erreur "Erreur inconnue" c'est simpliste je sais mais ça va changer ^^.

    Effectivement comme l'a dit tchize_, je jetterais un oeil voir si le logger de mon appli cliente n'est pas en cause.

  8. #8
    Expert éminent sénior
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Points : 23 190
    Points
    23 190
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par tchize_ Voir le message
    adiguba: il mentionne qu'il a la trace de l'erreur avant le message perso
    Les écritures sur System.out sont bufférisées... mais pas celle sur System.err qui sont envoyées immédiatement. Donc on ne peut pas forcément prédire l'ordre d'apparition des messages.


    Pour le peu de code que je vois, la gestion de l'exception n'est pas correct.

    a++

  9. #9
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    30
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 30
    Points : 14
    Points
    14
    Par défaut
    Bon au final j'ai juste rajouté les catch() sur mes exceptions specifiques, et je verrais du côté du logger de l'appli si je peux faire qqch.

    J'ai testé System.err à la place de System.out et aucun changement d'ordre d'apparition des messages.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    try {
    	context = authenticationWS.login(user.getLogin(),user.getPassword(),"00000");	
    } catch(AccessDeniedException_Exception e) {
    	// Messages erreurs.
    } catch(LicenceException_Exception e) {
           // Messages erreurs.    
    } catch(ProductException_Exception e) {
           // Messages erreurs.
    } catch(Exception e) {
    	// Message erreur generaliste.
    }

Discussions similaires

  1. Corriger le traitement aprés une Exception
    Par gatua dans le forum C++
    Réponses: 13
    Dernier message: 24/01/2008, 18h58
  2. Traitement d'une exception
    Par Sebastien_INR59 dans le forum AWT/Swing
    Réponses: 1
    Dernier message: 11/11/2007, 20h29
  3. Réponses: 1
    Dernier message: 11/10/2006, 16h24
  4. Réponses: 6
    Dernier message: 28/08/2006, 17h02
  5. Utiliser les exceptions pour un traitement particulier ?
    Par Blustuff dans le forum Assembleur
    Réponses: 11
    Dernier message: 01/12/2004, 02h21

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