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 :

Gérer une Exception


Sujet :

Langage Java

  1. #1
    Membre régulier
    Inscrit en
    Juillet 2002
    Messages
    225
    Détails du profil
    Informations forums :
    Inscription : Juillet 2002
    Messages : 225
    Points : 85
    Points
    85
    Par défaut Gérer une Exception
    Bonjour

    J'ai une methode A() ou je leve une exception quand un objet est null:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    class A {
     
    public String  m1() {
     
    ...
     
    if (unObjet==null)
     
    {throw new ExceptionMetier()}
    ....
     
    }
    }
    J'appelle cette méthode à partir d'un emplacement , je voudrais la cacther et mettre une message personnel :

    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
     
     
    Void m2()
     
    {
     
    A a =new A();
     
    try
    {
    String sTr= a.m1()
    }
    catch (ExceptionMetier e)
     
    {System.err.print("Mon message personnel");}
    Mais j'ai toujours la stack de l'exception mais pas le message que je veux ..

    MErci pour vos idées

  2. #2
    Membre actif Avatar de blackhorus
    Inscrit en
    Février 2003
    Messages
    209
    Détails du profil
    Informations forums :
    Inscription : Février 2003
    Messages : 209
    Points : 226
    Points
    226
    Par défaut
    Peut être que le type d'exception est plus général que ton ExceptionMetier ?

  3. #3
    Membre régulier
    Inscrit en
    Juillet 2002
    Messages
    225
    Détails du profil
    Informations forums :
    Inscription : Juillet 2002
    Messages : 225
    Points : 85
    Points
    85
    Par défaut
    Citation Envoyé par blackhorus Voir le message
    Peut être que le type d'exception est plus général que ton ExceptionMetier ?
    je catch la meme exception envoyé par m1() : ExceptionMetier ..

    la stack me le dit explicitement que c'est une exception de type :

    ExceptionMetier

    cella meme que je catche dans m2()..

  4. #4
    Membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Juin 2006
    Messages
    78
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2006
    Messages : 78
    Points : 59
    Points
    59
    Par défaut
    Je pense que dans une classe tu peux mettre ton "try" tout au debut et ton "catch" tout à la fin.

    Une bonne solution est de proceder de la maniere suivante :

    - Tu crees une nouvelle classe que tu nommes ArgumentInvalideException par exemple.

    Comme ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
     
    public class ArgumentInvalideException extends Exception {
     
    	public ArgumentInvalideException() {
    		super();
    	}
     
    	public ArgumentInvalideException(String message) {
    		super(message);
    	}
     
    }
    (Elle herite de la classe Exceptions de java)

    Et à l'endroit où tu veux lever une exception tu fais ceci :

    throw new ArgumentInvalideException("Ton message");


    Chez moi ca fonctionne très bien

  5. #5
    Membre régulier
    Inscrit en
    Juillet 2002
    Messages
    225
    Détails du profil
    Informations forums :
    Inscription : Juillet 2002
    Messages : 225
    Points : 85
    Points
    85
    Par défaut
    Citation Envoyé par 20cents Voir le message
    Je pense que dans une classe tu peux mettre ton "try" tout au debut et ton "catch" tout à la fin.

    Une bonne solution est de proceder de la maniere suivante :

    - Tu crees une nouvelle classe que tu nommes ArgumentInvalideException par exemple.

    Comme ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
     
    public class ArgumentInvalideException extends Exception {
     
    	public ArgumentInvalideException() {
    		super();
    	}
     
    	public ArgumentInvalideException(String message) {
    		super(message);
    	}
     
    }
    (Elle herite de la classe Exceptions de java)

    Et à l'endroit où tu veux lever une exception tu fais ceci :

    throw new ArgumentInvalideException("Ton message");


    Chez moi ca fonctionne très bien

    merci

    cela ne marche pas ..

    Ce que je veux faire c'est de remplacer le message de l'exception par un message personnel

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    442
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 442
    Points : 540
    Points
    540
    Par défaut
    Citation Envoyé par MASSAKA Voir le message
    Mais j'ai toujours la stack de l'exception mais pas le message que je veux ..
    Peux-tu fournir la sortie du stack ?

  7. #7
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    41
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 41
    Points : 36
    Points
    36
    Par défaut
    Bonjour,


    J'appuie la réponse de 20cents sur le point que :

    Si ton exception hérite bien de Exception tu as la effectivement la possibilité de réimplémenter le contructeur :

    Exception(String message)
    Constructs a new exception with the specified detail message.
    dans ta classe ExceptionMetier.

    Cependant la méthode :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    try
    {
    String sTr= a.m1()
    }
    catch (ExceptionMetier e)
     
    {System.err.print("Mon message personnel");}
    devrai egallement fonctionner, ... je viens de voir que dans :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    class A {
     
    public String  m1() {
     
    ...
     
    if (unObjet==null)
     
    {throw new ExceptionMetier()}
    ....
     
    }
    }
    la méthode m1 ne précise pas throws ExceptionMetier, je te propose donc :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    class A {
     
    public String  m1() throws ExceptionMetier{
     
    ...
     
    if (unObjet==null)
     
    {throw new ExceptionMetier()}
    ....
     
    }
    }
    il est étrange que le compilateur ne te retourne aucune erreur ?, à moins que ta classe d'exception hérite de RuntimeException, dans ce cas et pour éviter ce genre d'oublit tu peut hériter de Exception à la place (si tu n'a pas d'autre utilités de RuntimeException bien sur).

    voir FAQ : http://java.developpez.com/faq/java/...ception_caught

Discussions similaires

  1. Gérer une exception
    Par popy67 dans le forum Débuter avec Java
    Réponses: 4
    Dernier message: 13/11/2010, 21h51
  2. Comment gérer une exception ?
    Par Hydro999 dans le forum R
    Réponses: 2
    Dernier message: 08/09/2010, 16h43
  3. gérer une exception envoyée par un handler de thread
    Par floopi51 dans le forum Débuter avec Java
    Réponses: 2
    Dernier message: 01/04/2010, 15h06
  4. gérer une exception
    Par optixpro dans le forum C++Builder
    Réponses: 3
    Dernier message: 14/05/2009, 14h21
  5. Ne pas gérer une exception
    Par flames dans le forum Langage
    Réponses: 1
    Dernier message: 06/05/2007, 16h48

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