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

AWT/Swing Java Discussion :

[Exception] Comment catcher une runtime exception ? [FAQ]


Sujet :

AWT/Swing Java

  1. #1
    Rédacteur
    Avatar de bulbo
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Février 2004
    Messages
    1 259
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Finance

    Informations forums :
    Inscription : Février 2004
    Messages : 1 259
    Points : 1 937
    Points
    1 937
    Par défaut [Exception] Comment catcher une runtime exception ?
    Bonjour,

    Je sais qu'il y a une astuce mais elle a malheureusement disparue du forum

    Adiguba l'avait trouve .. d'ailleurs si il s'en souvient ..

    Voila mon probleme est un OutOfMemory error que je veux catcher dans une GUI .. j'ai mis des catchs dans tout les coins mais pas moyen .. ca doit etre dans une partie Swing ..

    Si qqun sait comment faire .. pour info meme un try catch englobant tout le main ne sert a rien ..

    Bulbo
    [Java] [NetBeans] [CVS]
    La FAQ Java
    Merci de ne pas me poser de questions techniques par MP.

  2. #2
    Membre expérimenté Avatar de herve91
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    1 282
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 1 282
    Points : 1 608
    Points
    1 608
    Par défaut
    bonsoir,

    OutOfMemory n'est pas une Exception, mais une Error (une des deux classes héritées de Throwable avec Exception).
    Donc pour catcher OutOfMemory , tu peux faire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    try {
      ...
    } catch (OutOfMemory oom) {
      ...
    } catch (Error er) {
      // les autres erreurs
    } catch (Exception ex) {
      // les exceptions
    }

  3. #3
    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 Re: [Swing][Exception] Comment catcher une runtime exception
    Salut,

    Citation Envoyé par bulbo
    Adiguba l'avait trouve .. d'ailleurs si il s'en souvient ..
    Toi tu as de la chance je m'en souvient

    Citation Envoyé par herve91
    OutOfMemory n'est pas une Exception, mais une Error (une des deux classes héritées de Throwable avec Exception).
    Exact.
    Mais en fait bulbo parle d'intercepter toutes les éléments Throwable qui généralement ne neccessite pas un bloc try/catch (comme les Error, les RuntimeException...)



    Donc il suffisait de positionner la propriété systeme sun.awt.exception.handler soit avec l'option -D de java soit avec un System.setProperty()...
    Cette propriété doit contenir le nom complet d'une classe contenant une méthode :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    public void handle (Throwable t);
    A chaque exception non intercepté, une nouvelle instance de cette classe est crée (il faut un constructeur vide) et la méthode handle() est appellée...

    Par contre je me souviens que cette solution n'était pas garantis (ce n'est pas du tout standard) et il était indiqué que cette "fonctionnalité" serait supprimé dans le future...

    Et apparemment cela ne marche pas avec Java 1.5...



    Toutefois si tu utilises Java 1.5 tu peux utiliser les UncaughtExceptionHandler que tu utilises avec la méthode Thread.setDefaultUncaughtExceptionHandler() (voir avec setUncaughtExceptionHandler() si tu veux le faire thread par thread...)

    Cette solution est nettement plus propre mais malheureusement elle neccessite une JVM 1.5...

    A toi de voir

    a++

  4. #4
    Rédacteur
    Avatar de bulbo
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Février 2004
    Messages
    1 259
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Finance

    Informations forums :
    Inscription : Février 2004
    Messages : 1 259
    Points : 1 937
    Points
    1 937
    Par défaut
    Mon herooos ..

    Merci Adiguba .. et herve91 meme si tu m'as pris pour une bille avec le coup du catch

    [Edit]
    Bon ca marche avec une 1.4 .. sur un exemple simple mais dans mon cas ca ne resoud pas le probleme c'est probablement au niveau de JFreeChart que ca plante .. tant pis j'aurai essaye au moins
    [/Edit]

    Bulbo
    [Java] [NetBeans] [CVS]
    La FAQ Java
    Merci de ne pas me poser de questions techniques par MP.

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

Discussions similaires

  1. Comment catcher dynamiquement une exception à la demande?
    Par jlassiramzy dans le forum Langage
    Réponses: 5
    Dernier message: 06/04/2011, 10h29
  2. [EJB3] Comment catcher une erreur de connexion à la base de données
    Par chriscoolletoubibe dans le forum Java EE
    Réponses: 5
    Dernier message: 03/01/2011, 10h59
  3. Réponses: 13
    Dernier message: 27/04/2009, 16h37
  4. Réponses: 4
    Dernier message: 24/01/2007, 19h45
  5. Réponses: 2
    Dernier message: 28/08/2003, 00h00

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