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 :

Comment attraper une exception ?


Sujet :

Langage Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    95
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 95
    Par défaut Comment attraper une exception ?
    Bonjour voila j'ai un problème. Lorsque j'utilise mon programme pour numériser un document, si je choisit trop de DPI comme paramêtre de scanner le programme plante. J'obtient ce message sous Eclipse :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Exception in thread "Thread-2" java.lang.OutOfMemoryError : Java hep space
    J'aimerais pouvoir attrapé cette exception pour éviter que le programme se bloque entièrement mais comment faire sachant que je ne sais pas quelle méthode la lance ? j'ai essayé de mettre un try catch autour de la méthode "acquisition()" et aussi autour du "new programme()" permettant de lancer mon programme . Mais rien à faire... qu'en pensez-vous ? ??? merci

  2. #2
    Membre Expert
    Avatar de ®om
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    2 815
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 815
    Par défaut
    Citation Envoyé par ionix
    Bonjour voila j'ai un problème. Lorsque j'utilise mon programme pour numériser un document, si je choisit trop de DPI comme paramêtre de scanner le programme plante. J'obtient ce message sous Eclipse :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Exception in thread "Thread-2" java.lang.OutOfMemoryError : Java hep space
    J'aimerais pouvoir attrapé cette exception pour éviter que le programme se bloque entièrement mais comment faire sachant que je ne sais pas quelle méthode la lance ? j'ai essayé de mettre un try catch autour de la méthode "acquisition()" et aussi autour du "new programme()" permettant de lancer mon programme . Mais rien à faire... qu'en pensez-vous ? ??? merci
    Les "Error" ne sont pas faites pour être attrapées...
    De toute façon dès que tu as cette erreur, le programme s'arrête normalement...

  3. #3
    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,

    Citation Envoyé par ®om
    Les "Error" ne sont pas faites pour être attrapées...
    C'est tout à fait vrai... mais cela reste possible :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    try {
                // methode qui alloue beaucoup de mémoire
            } catch (OutOfMemoryError error) {
                error.printStackTrace();    
            }
    Mais cela reste dangereux dans une application multithread (et une application graphique est forcément multithread), car l'exception peut survenir sur un autre thread, ce qui peut au final bloqué ton application...

    a++

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    95
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 95
    Par défaut
    Bon j'ai mis des try catch partout même aux endroits inutils ... pour vous dire...


    ®om il faut savoir que le programme ne s'arrête pas .. il continue de tourner sauf qu'il est important pour moi d'attraper cette exception.

    Il dois y avoir un moyen de toute façon ma maman m'a dit que toutes les exceptions peuvent être attrapées pour contourner l'erreur ou bien afficher son propre message d'erreur


    et sinon je veux bien mettre un try catch(OutOfMemoryError) mais où ?

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    95
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 95
    Par défaut
    adiGuba à écrit :
    a++
    Reviens !!

  6. #6
    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
    Citation Envoyé par ionix
    et sinon je veux bien mettre un try catch(OutOfMemoryError) mais où ?
    C'est justement le problème : cette exception peut survenir n'importe où !
    Donc en mono-thread c'est simple à gérer mais pas en multi-thread...

    La meilleure solution est de se débrouiller pour que cela n'arrive pas (en réservant plus de mémoire à java, ou en vérifiant les données avant traitement)

    a++

  7. #7
    Membre expérimenté Avatar de dazz_x
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    269
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations forums :
    Inscription : Mars 2006
    Messages : 269
    Par défaut
    [MODE hocazou ON]

    en réservant plus de mémoire à java
    à ajouter dans les paramètres de la JVM
    (defini la mémoire MAX allouée à la JVM)

    -Xmx256m

    (pour 256 Mo, mais 64m pour 64 Mo etc)

    [MODE hocazou OFF]

  8. #8
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    95
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 95
    Par défaut
    Merci pour vos réponses et explications c'est super simpa.

    En allouant plus de mémoire à la machine virtuelle il est vrai que ça marche... mais d'un côté si j'alloue 256mo et que le type numérise une image en 10000000 DPI il va y avoir l'exception... je trouve que c'est un peu du "bricolage", non ?

Discussions similaires

  1. Réponses: 4
    Dernier message: 24/01/2007, 19h45
  2. Comment résoudre une exception?
    Par mambo dans le forum Visual C++
    Réponses: 11
    Dernier message: 28/08/2006, 14h48
  3. Réponses: 3
    Dernier message: 11/08/2006, 16h46
  4. 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