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

Langage Java Discussion :

Gestion globale/générique des exceptions


Sujet :

Langage Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    56
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 56
    Par défaut Gestion globale/générique des exceptions
    Salut,

    Est-il possible en Java d'avoir un traîtement "global/générique" des exceptions ?

    Ce que j'entends par là n'est ni le traîtement "particulier" d'exceptions ( try { ... } catch { ... } ), ni la délégation du traîtement "particulier" d'exceptions ( throws Exception { ... } ), ni le déclenchement d'exceptions personnalisées ( throw new CustomException(); ).

    En fait, quelquesoit le type d'exception (exception native de Java ou exception personnalisée, traîtée localement ou non), j'aimerais qu'un traîtement global soit systématiquement réalisé (afin de fermer les connexions à la base de données ici).

    Par exemple, si je crée une liste non-initialisée, que je tente d'accéder à cette liste et que Java déclenche une "NullPointerException", ou si Java déclenche tout autre type d'erreur, puis-je rebondir en associant de manière globale un unique traîtement à ces erreurs ?

    Est-ce possible ? Y a-t-il une notion que je n'ai pas comprise dans la gestion des exceptions ?

    Merci et bonne journée.

  2. #2
    Rédacteur
    Avatar de eclesia
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    2 111
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 2 111
    Par défaut
    Ce que tu cherches a faire c'est gérer un logiciel complet comme s'il s'agissait d'un gros bloc de code douteux en somme.

    ca me parait bien barbare comme méthode de conception.

    Est-ce possible ? Y a-t-il une notion que je n'ai pas comprise dans la gestion des exceptions ?
    Les NullPointerException et quelques autres peuvent arriver un peu partout, mais jamais si tu fais bien les tests requis.

    Le but des exceptions n'est pas de les cacher à l'utilisateur, mais de les faire remonter (avec les throws) jusqu'au moment ou une methode fera un try{}catch() et previendra l'utilisateur d'une facon ou d'une autre que ce qu'il a fait est mal ou qu'une erreur c'est produite.

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    56
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 56
    Par défaut
    Ok, merci de ta réponse.

    Ce que tu cherches a faire c'est gérer un logiciel complet comme s'il s'agissait d'un gros bloc de code douteux
    Bien entendu, il faut veiller à éviter les erreurs etc. (plan A), mais aucun développeur n'est infaillible, et en cas d'erreur non-envisagée, c'est là que ma question intervient (plan B). Je fais le maximum pour ne pas avoir un code "douteux", mais ne repousse pas et prend néanmoins en compte cette éventualité de comportements inattendus de l'application.

    Le but des exceptions n'est pas de les cacher à l'utilisateur
    Mon but n'est pas de masquer les erreurs, mais bien d'avoir une unique réaction pour tout type d'erreur fatale (fermer les connexions à une base HSQLDB lorsque l'application plante, pour que les données soient bien écrites en base et qu'aucun fichier .lck résidu ne soit présent). Certaines erreurs informelles (mauvaise saisie, etc.) sont bonnes à remonter à l'utilisateur, mais d'autres sont plus structurelles/techniques et ne le concernent pas (fermeture des connexions à la base).

    Si je comprends bien ton explication, il n'est pas possible d'avoir un traîtement d'exceptions "global".

    Il faut gérer les exceptions potentielles en de multiples endroits du code, et les faire remonter par groupes pour ainsi associer/factoriser le traîtement d'erreurs. Je vois un çà peu comme un arbre du coup : du "throw" dans les feuilles pour remonter les exceptions jusqu'au "try { ... } catch(...) { ... }" de la racine.

    Donc si un "NullPointerException" comme décrit auparavant se présente, je suis obligé de le gérer particulièrement dans le code (çàd. le faire remonter ou le traîter sur place), mais ne peut pas effectuer de configuration "globale/générale" pour indiquer à la JVM que tout exception déclenchée doit exécuter une portion de code donnée ?

    Ce que j'envisage comme stratégie de gestion des exceptions, c'est un traîtement global des exceptions (qqsoit l'erreur fatale, il faudra fermer les connexions à la base), suivi d'un traîtement particulier s'il existe (le contenu du "catch(...) { ... }" si l'exception a été gérée dans le code).

    Avant de clore le sujet, j'aimerais récolter quelques autres avis et m'assurer que çà n'est vraiment pas possible. Le cas échéant, quelle stratégie adopter pour obtenir la stratégie énoncée ci-dessus ?

  4. #4
    Expert éminent
    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
    Billets dans le blog
    1
    Par défaut
    Salut,


    Tu peux utiliser setUncaughtExceptionHandler() pour traiter les exceptions qui ne sont pas catché, comme les NPE par exemple

    a++

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    56
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 56
    Par défaut
    Dans le mille Mimil' Merci beaucoup.

    Emballé c'est pesé, poils aux doigts poils au c**, sujet résolu !

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

Discussions similaires

  1. exceptions.h, vers une gestion plus facile des exceptions
    Par nojhan dans le forum Contribuez
    Réponses: 1
    Dernier message: 15/04/2014, 11h40
  2. Gestion des exception (EOleException)
    Par shurized dans le forum Bases de données
    Réponses: 5
    Dernier message: 30/06/2004, 17h25
  3. [XMLRAD] gestion des exceptions
    Par pram dans le forum XMLRAD
    Réponses: 2
    Dernier message: 28/01/2003, 17h48
  4. c: gestion des exceptions
    Par vince_lille dans le forum C
    Réponses: 7
    Dernier message: 05/06/2002, 14h11

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