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 :

fonction type exception en paramètre


Sujet :

C#

  1. #1
    Membre régulier
    Inscrit en
    Janvier 2006
    Messages
    716
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 716
    Points : 112
    Points
    112
    Par défaut fonction type exception en paramètre
    Bonjour,

    Je voudrais savoir s'il est possible de passer le type d'une exception en paramètre d'une fonction ?

    Je souhaite faire quelque chose comme ça (e peut être de type RequiredFieldException ou BusinessException par exemple):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    public void controleIntField(int? nombre, Exception e)
            {
                if (!nombre.HasValue)
                {
                    throw new e("Le champ  est obligatoire !");
                }
            }
    Merci pour votre aide

  2. #2
    Max
    Max est déconnecté
    Expert éminent sénior

    Avatar de Max
    Homme Profil pro
    Artisan développeur
    Inscrit en
    Mai 2007
    Messages
    2 954
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Artisan développeur
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2007
    Messages : 2 954
    Points : 14 933
    Points
    14 933
    Par défaut
    Salut

    Tu ne peux pas précisément passer le type en paramètre, mais tu peux créer une méthode générique :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    public void controleIntField<T>(int? nombre) where T : Exception {
        if (!nombre.HasValue) {
            throw (T)Activator.CreateInstance(typeof(T), "Le champ  est obligatoire !");
        }
    }
    En pratique :

    • une contrainte avec where : Exception afin de ne pouvoir utiliser cette méthode qu'avec des types qui héritent d'Exception
    • ici on utilise Activator.CreateInstance et pas new() parce qu'il y a besoin de passer un paramètre au constructeur


    Exemple pour l'appeler : controleIntField<ArgumentException>(10)

  3. #3
    Membre chevronné
    Homme Profil pro
    edi
    Inscrit en
    Juin 2007
    Messages
    905
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : edi

    Informations forums :
    Inscription : Juin 2007
    Messages : 905
    Points : 1 923
    Points
    1 923
    Par défaut
    Puisque tu as l'air de savoir à l'appel de la fonction quel est le type d'exception à lancer tu pourrait passer une factory à cette fonction à la volée avec une lambda :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    public void controleIntField(int? nombre, Func<string, Exception> factory) // une fonction qui prend en paramètre une string et renvoie une exception
            {
                if (!nombre.HasValue)
                {
                    throw factory("Le champ  est obligatoire !");
                }
            }
    L'appel :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    controleIntField(field, s => new RequiredFieldException(s));
    Ceci-dit, pourquoi as-tu besoin de changer le type d'exception lancée par ta fonction ?

Discussions similaires

  1. [XL-2013] Fonction Find : utiliser un paramètre de type ">0" pour l'argument what
    Par ldescham dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 15/05/2014, 19h02
  2. Réponses: 4
    Dernier message: 22/01/2013, 11h01
  3. Type énumération en paramètres d'une fonction
    Par Menitima dans le forum Débuter avec Java
    Réponses: 3
    Dernier message: 25/06/2012, 15h21
  4. [CR 8.5]Aff d'une section en fonction d'un champ paramètre ?
    Par caviar dans le forum SAP Crystal Reports
    Réponses: 2
    Dernier message: 16/02/2005, 16h15
  5. Type String* en paramètre...
    Par Invité dans le forum MFC
    Réponses: 4
    Dernier message: 24/02/2004, 19h48

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