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

VB.NET Discussion :

Reflexion et exception


Sujet :

VB.NET

  1. #1
    Membre émérite
    Avatar de Gurdil le nain
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Avril 2009
    Messages
    468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2009
    Messages : 468
    Par défaut Reflexion et exception
    Bonjour à tous,

    J'ai une nouvelle fois besoin de vos lumières.

    J'ai un problème avec un fonction de sauvegarde en base de données que j'appelle avec un InvokeMember. Cette fonction s'appelle bien mais génère une exception qui apparemment est catché avant le retour dans mon code.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    Try
        For Each obj As Object In listObjects
             If (obj.GetType().BaseType.Name = GetType(EntityCollectionBase(Of )).Name) Then
                  transaction.Add(obj)
                  obj.GetType().InvokeMember("SaveMulti", BindingFlags.InvokeMethod, Nothing, obj, Nothing)
             Else
                  transaction.Add(obj)
                  obj.GetType().InvokeMember("Save", BindingFlags.InvokeMethod, Nothing, obj, Nothing)
             End If
        Next
        transaction.Commit()
    Catch ex As Exception
        transaction.Rollback()
    End Try
    Lorsque l'objet existe déjà en base (ce qui est normal), il sort une exception du type :
    SD.LLBLGen.Pro.ORMSupportClasses.ORMQueryExecutionException was unhandled by user code
    Message=An exception was caught during the execution of an action query: Violation of PRIMARY KEY constraint ''. Cannot insert duplicate key in object.
    The statement has been terminated.. Check InnerException, QueryExecuted and Parameters of this exception to examine the cause of this exception.
    Mais bon, moi j'aimerais bien quelle passe dans mon catch cette petite...ce qu'elle ne fait pas.

    J'ai essayé de la lancer à partir d'un objet (sans reflexion), et je peux catcher l'exception...pourquoi pas là ?

    (Si j'ai pas été clair, désolé, il fait chaud )

  2. #2
    Membre Expert Avatar de DonQuiche
    Inscrit en
    Septembre 2010
    Messages
    2 741
    Détails du profil
    Informations forums :
    Inscription : Septembre 2010
    Messages : 2 741
    Par défaut
    Ce n'est pas clair, non.
    Tu as regardé du côté des exceptions lancées ou non par le débogueur ? Menu "Debug > Exceptions" de mémoire.

  3. #3
    Membre émérite
    Avatar de Gurdil le nain
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Avril 2009
    Messages
    468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2009
    Messages : 468
    Par défaut
    Ouais, j'en étais sur...chuis allé boire un peu d'eau fraiche, ça devrait aller mieux

    Alors, je dois enregistrer des objets en bases (ces objects sont générés à partir d'un ORM et donc la méthode de sauvegarde, c'est pas moi qui l'écrit et j'y ai pas accès). Si l'objet existe déjà, la fonction save me pète une exception (normal), que je veux catcher.

    J'arrive bien à la catcher lorsque je l'appelle depuis un objet instancier directement, genre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Try
        Dim fo as New MonObjet
        fo.Save()
    Catch ex as Exception
     'Là je vais bien la catcher
    End Try
    Cependant, je ne l'appelle jamais comme çà, puisque je ne sais jamais quel objet je vais devoir sauvegarder, je l'appelle donc comme sur mon premier post et là pouf, impossible de récupérer l'exception.

    C'est mieux ?

    (Jvais regarder du côté des exceptions du debuggeur)

    Ok, bien joué DonQuiche, j'avais zappé ce petit menu

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

Discussions similaires

  1. exception sur la reflexion
    Par ouadie99 dans le forum C#
    Réponses: 1
    Dernier message: 02/02/2009, 13h18
  2. [Debug] Exception et reflexion
    Par anthyme dans le forum Framework .NET
    Réponses: 7
    Dernier message: 23/01/2009, 11h50
  3. Réponses: 3
    Dernier message: 01/11/2002, 14h30
  4. Réponses: 5
    Dernier message: 12/06/2002, 15h12
  5. c: gestion des exceptions
    Par vince_lille dans le forum C
    Réponses: 7
    Dernier message: 05/06/2002, 14h11

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