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

C# Discussion :

[C#][Exception] Comment implémenter l'équivalent throws de Java ?


Sujet :

C#

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2004
    Messages
    23
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2004
    Messages : 23
    Points : 24
    Points
    24
    Par défaut [C#][Exception] Comment implémenter l'équivalent throws de Java ?
    Bonjour,

    Voilà habituellement je développe plutôt en java, mais j'essai de me mettre au C#. Hors, après plusieurs recherche je ne trouve pas d'équivalent au Throws de Java permettant de définir les exceptions remontées par une méthode et donc de forcer l'utilisation de try catch sur son appel.

    Je trouve ça plutôt gênant lors de certains développements.

    Mes questions sont donc :
    1. Est-ce qu'un équivalent existe ? (s'il existe est que je ne l'ai pas vu, j'en suis désolé).
    2. S'il n'existe pas, existe-t-il des règles de codage couramment utilisées pour palier à se problème ?

    Merci d'avance pour vos réponses.

    Julien

  2. #2
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    91
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2006
    Messages : 91
    Points : 78
    Points
    78
    Par défaut
    Oui le "throw".

    J'ai eu la même diffiulté que toi. Voulant juste faire remonter l'exception sans la traiter à ce niveau, j'ai mis un "throws" comme en Java et que dalle...

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2004
    Messages
    23
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2004
    Messages : 23
    Points : 24
    Points
    24
    Par défaut
    Merci de ta réponse.

    Effectivement, j'avais bien vu le throw. Pas de souci, mais ma problématique n'est pas sur le throw. Mon problème c'est comment forcer l'utilisateur d'une de mes méthodes à utiliser un Try Catch afin d'éviter que l'appli n'explose car avec juste un throw, si j'utilise cette méthode en oubliant le block Try, mon appli à une fâcheuse tendance à pouvoir exploser.

    L'avantage du Throws, c'est qu'à la compile si j'oubli de try, ça ne passe pas.

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2002
    Messages
    487
    Détails du profil
    Informations personnelles :
    Âge : 55
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations forums :
    Inscription : Juillet 2002
    Messages : 487
    Points : 621
    Points
    621
    Par défaut
    A ma connaissance, on ne peut pas obliger à intercepter les exceptions en C#.
    De toute façon, une exception doit rester exceptionnelle.

    L'exception ne devrait pas se produire en utilisation normale, ce qui n'oblige pas à l'intercepter si les conditions d'appel de la fonction sont valides.
    On ne peut pas faire boire un âne qui n'a pas soif.

  5. #5
    Rédacteur
    Avatar de abelman
    Inscrit en
    Février 2003
    Messages
    1 106
    Détails du profil
    Informations forums :
    Inscription : Février 2003
    Messages : 1 106
    Points : 2 629
    Points
    2 629
    Par défaut
    Citation Envoyé par Jedy
    Merci de ta réponse.

    Effectivement, j'avais bien vu le throw. Pas de souci, mais ma problématique n'est pas sur le throw. Mon problème c'est comment forcer l'utilisateur d'une de mes méthodes à utiliser un Try Catch afin d'éviter que l'appli n'explose car avec juste un throw, si j'utilise cette méthode en oubliant le block Try, mon appli à une fâcheuse tendance à pouvoir exploser.

    L'avantage du Throws, c'est qu'à la compile si j'oubli de try, ça ne passe pas.
    Il n'y a effectivement pas d'équivalent en C# pour cela à ma connaissance

  6. #6
    Expert éminent
    Avatar de neguib
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    3 627
    Détails du profil
    Informations personnelles :
    Âge : 63
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 627
    Points : 7 879
    Points
    7 879
    Par défaut
    Citation Envoyé par abelman
    Il n'y a effectivement pas d'équivalent en C# pour cela à ma connaissance
    je confirme également à moins d'implémenter son propre compilateur C# amélioré à la mode Java
    Pour le bien de ceux qui vous lisent, ayez à coeur le respect du forum et de ses règles

  7. #7
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2004
    Messages
    23
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2004
    Messages : 23
    Points : 24
    Points
    24
    Par défaut
    Merci à tous pour vos réponses.

    Bon, du coup comme j'ai pas envi de coder un compilateur C# , je vais opter pour ne pas coder comme en java .

    Merci encore.
    Julien

  8. #8
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France, Indre et Loire (Centre)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 10
    Points : 8
    Points
    8
    Par défaut
    Salut, je sais message date.

    Je suis dans le même cas : ancien java, nouveau c# (ASP en plus).
    Je fais du n-tier et je voudrais afficher un message sur mon interface si il y a un problème lors de la connection.
    Donc transmission des exceptions dans les couches jusqu'a l'interface, donc Throws....
    c'est donc là le hic. Pour le moment la méthode que j'utilise pour remonter une exception déjà faite c'est :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    try
       {
          // bla bla pour la connexion
       }
       catch (Exception e)
       {
          throw e;
       }
    et donc ça à chaque couche.
    Il y a pas mieux?

  9. #9
    Membre expérimenté
    Homme Profil pro
    Inscrit en
    Juillet 2007
    Messages
    1 277
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Réunion

    Informations forums :
    Inscription : Juillet 2007
    Messages : 1 277
    Points : 1 521
    Points
    1 521
    Par défaut
    Tout d'abord, pour transmettre une exception identique, il ne faut pas utiliser throw e mais juste throw.

    En plus, dans ton cas spécifiquement, ce n'est pas la peine de le faire.

    L'exception est "transmise" automatiquement aux couches supérieures (à la pile d'appel en fait) jusqu'à ce qu'un bloc try ... catch la catch et la traite. Si la pile d'appel est vide et qu'aucun bloc try ... catch n'a catché l'exception, le programme plante.

  10. #10
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France, Indre et Loire (Centre)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 10
    Points : 8
    Points
    8
    Par défaut
    Merci pour ta réponse .

    Donc, pour être sûre de bien comprendre, le "Throws" Java est implicite en C# ?

    Je viens de faire un test, c'est pas mal ça ! Ça simplifie les choses (je pense en tout cas)
    Il ne me reste plus qu'à récupérer mon exception dans ma page ASP... c'est pas encore gagné avec du n-tier mais bon, pas de défi, pas de fierté

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

Discussions similaires

  1. Réponses: 8
    Dernier message: 16/06/2005, 13h58
  2. [Exception] Comment catcher une runtime exception ?
    Par bulbo dans le forum AWT/Swing
    Réponses: 3
    Dernier message: 16/06/2005, 09h46
  3. [Exception]Comment gérer les exceptions ?
    Par Gildas Huart dans le forum Général Java
    Réponses: 7
    Dernier message: 29/03/2005, 18h01
  4. [Exceptions] Comment afficher le numéro de la ligne ?
    Par hpalpha dans le forum Langage
    Réponses: 2
    Dernier message: 09/12/2004, 09h58
  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