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 des exceptions


Sujet :

Langage Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé

    Inscrit en
    Juin 2003
    Messages
    158
    Détails du profil
    Informations forums :
    Inscription : Juin 2003
    Messages : 158
    Par défaut Gestion des exceptions
    Bonjour,

    Actuellement, j'ai redirigé la sortie en erreur vers un fichier spécifique
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    // Création du nom de fichier pour la session courante
    Calendar c = Calendar.getInstance();
    String traceName = c.get(Calendar.YEAR)+"-"+Integer.toString(c.get(Calendar.MONTH)+1)+"-"+c.get(Calendar.DAY_OF_MONTH)+"-"+c.get(Calendar.HOUR_OF_DAY)+"-"+c.get(Calendar.MINUTE)+"-"+c.get(Calendar.SECOND)+".log";
     _file = new File(path+"/"+traceName);
    _out = new PrintStream(new BufferedOutputStream(new FileOutputStream(_file.getPath())));
    System.setErr(_out);
    Pas de problèmes jusque là mais je voudrais intercepter les exceptions pour envoyer automatiquement un email avec la stack de l'exception afin d'optimiser le traitement des problèmes.
    Une première solution serait de scanner le fichier de log mais je ne trouve pas cela très propre.
    Une autre solution serait de m'intégrer dans chaque try/catch pour appeler la méthode d'envoi d'email (je préfère encore la première solution car pas du tout générique)
    Ne serait-il pas possible d'analyser à la volée le flux ou d'être appelé par un événement quelconque lorsque le contenu du fichier de log est modifié ?

    Merci pour votre aide

  2. #2
    Membre émérite
    Avatar de divxdede
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    525
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Avril 2004
    Messages : 525
    Par défaut
    Faudrait que ton PrintStream detecte que c'est une exception et gerer l'envoi de mail directement

  3. #3
    Membre chevronné Avatar de spekal
    Inscrit en
    Mai 2005
    Messages
    502
    Détails du profil
    Informations forums :
    Inscription : Mai 2005
    Messages : 502
    Par défaut
    Je pense effectivement que tu pourrais prévoir ton printstream de façon à ce qu'il gère l'envoie des mails. Soit tu peux te faire ton propre printstream à cet effet, avec le modèle des filtres, soit tu utilises le modèle de pipes. Tous ces modèles sont déjà dans java.io.

    Autre solution, il me semble que la librairie de logging log4j permet de le faire directement, à condition toutefois de logger toutes les exceptions par son intermédiaire. C'est une librairie très utilisée.

    Peut être utile aussi, tout ce qui est UncaughtExceptionHandler, que tu trouveras dans la classe Thread, et qui te permettra de récupérer les exceptions non traitées.

  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,


    Si tu fais déjà des e.printStackTrace() dans tes bloc catch, tu peux eventuellement redéfinir ta propre classe PrintStream qui traitera les exceptions de manière particulière, en redéfinissant les méthode print(Object) et println(Object) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
     
     
        @Override
        public void print(Object obj) {
            if (obj instanceof java.lang.Throwable) {
                // Traitement de l'exception ...
            }
            super.print(obj.toString());
        }
     
        @Override
        public void println(Object obj) {
            if (obj instanceof java.lang.Throwable) {
                // Traitement de l'exception ...
            }
            super.println(obj.toString());
        }
    Mais il serait préférable d'utiliser plutôt une méthode spécial qui s'occupera de traiter les exceptions...


    En ce qui concerne les exceptions non-traité, UncaughtExceptionHandler serait en effet la meilleure solution (Java 5.0 seulement il me semble).

    a++

  5. #5
    Membre confirmé

    Inscrit en
    Juin 2003
    Messages
    158
    Détails du profil
    Informations forums :
    Inscription : Juin 2003
    Messages : 158
    Par défaut
    Merci pour vos idées, cela marche bien

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

Discussions similaires

  1. [ADOConnect] gestion des exception en tout temps
    Par portu dans le forum Bases de données
    Réponses: 1
    Dernier message: 20/04/2005, 19h01
  2. [ORACLE 9i] Gestion des exceptions
    Par sygale dans le forum SQL
    Réponses: 6
    Dernier message: 19/08/2004, 15h06
  3. Gestion des exception (EOleException)
    Par shurized dans le forum Bases de données
    Réponses: 5
    Dernier message: 30/06/2004, 17h25
  4. [XMLRAD] gestion des exceptions
    Par pram dans le forum XMLRAD
    Réponses: 2
    Dernier message: 28/01/2003, 17h48
  5. 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