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

avec Java Discussion :

Intérêt de créer cette Exception ?


Sujet :

avec Java

  1. #1
    Invité
    Invité(e)
    Par défaut Intérêt de créer cette Exception ?
    Bonjour,

    Voilà dans le projet dans lequel je suis, certaines méthodes génères des exceptions qui sont en fait des classes dérivées de la classe Exception comme ce qui suit :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    public class DaoException extends Exception {
     
    	public DaoException(Exception e) {
    		super(e);
    	}
    }
    Ma question est : quel est l'intérêt ? Ca revient au même que d'appeler la classe Exception tout court non ?!

    Merci pour votre aide

  2. #2
    Membre émérite
    Avatar de gifffftane
    Profil pro
    Inscrit en
    Février 2007
    Messages
    2 354
    Détails du profil
    Informations personnelles :
    Localisation : France, Loire (Rhône Alpes)

    Informations forums :
    Inscription : Février 2007
    Messages : 2 354
    Points : 2 582
    Points
    2 582
    Par défaut
    Cela peut se comprendre lorsque tu souhaites marquer le sens d'une exception.

    Par exemple, on comprend mieux :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    public void connectObject() throws DaoException
    que

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    public void connectObject() throws Exception
    il me semble, et ensuite c'est plus facile à désigner dans les catchs.

  3. #3
    Invité
    Invité(e)
    Par défaut
    Ok c'est aussi ce que je pensais mais je voulais avoir confirmation de quelqu'un de plus calé que moi

    Merci

  4. #4
    Expert éminent sénior Avatar de Uther
    Homme Profil pro
    Tourneur Fraiseur
    Inscrit en
    Avril 2002
    Messages
    4 613
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Orientales (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Tourneur Fraiseur

    Informations forums :
    Inscription : Avril 2002
    Messages : 4 613
    Points : 15 669
    Points
    15 669
    Par défaut
    Il y a une question de sens mais l'intérêt est surtout de limiter la portée de l'exception. Par exemple:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    try{
        ...
        int value = a/b; // peut lancer ArithmeticException si division par 0
        connectObject(); // peut lancer DaoException 
        ...
    } catch(DaoException e) {
        // gestion de l'erreur de connection
    } catch(ArthmeticException e){
        // gestion de l'erreur de calcul
    }
    Ici la division par zéro est traitée différemment de l'exception de DAO.

    Si connectObject() lançait des Exception, tu aurais été obligé de catcher Exception qui contient toutes les autres exception. Donc il serait difficile de traiter de manière différente une exception de Dao de n'importe quelle autre, de manière propre(on peut toujours ruser).

  5. #5
    Invité
    Invité(e)
    Par défaut
    Mais si DaoException ne se contente que d'étendre Exception, ça revient au même au final que de catcher Exception non ?

  6. #6
    Expert éminent sénior Avatar de Uther
    Homme Profil pro
    Tourneur Fraiseur
    Inscrit en
    Avril 2002
    Messages
    4 613
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Orientales (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Tourneur Fraiseur

    Informations forums :
    Inscription : Avril 2002
    Messages : 4 613
    Points : 15 669
    Points
    15 669
    Par défaut
    Non. Par exemple si tu fait:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    try{
        ...
        int value = a/b; // peut lancer ArithmeticException si division par 0
        connectObject(); // peut lancer DaoException 
        ...
    } catch(DaoException e) {
        System.out.println("Erreur de base de données");
    }
    Une division par zero plantera mais n'affichera pas "Erreur de base de données".
    Tandis que si tu catche Exception, comme ArithmeticException hérite de Exception comme toute les classes d'exception, tu affichera une erreur de base de données alors qu'il s'agit en fait d'une division par zéro.

  7. #7
    Invité
    Invité(e)
    Par défaut
    Got it

    Merci

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

Discussions similaires

  1. Réponses: 14
    Dernier message: 08/01/2013, 22h36
  2. Réponses: 5
    Dernier message: 15/04/2010, 17h17
  3. Réponses: 2
    Dernier message: 29/06/2006, 13h17
  4. Réponses: 1
    Dernier message: 19/06/2006, 15h46
  5. aidez moi pour créer cette applet svp!
    Par walid2012 dans le forum JBuilder
    Réponses: 1
    Dernier message: 11/05/2006, 14h24

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