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 :

[vbnet] Using Statement et Try/Catch


Sujet :

VB.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre actif
    Inscrit en
    Juin 2004
    Messages
    75
    Détails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 75
    Par défaut [vbnet] Using Statement et Try/Catch
    Bonjour,

    Petite question:

    Avec l'utilisation du Using pour une connexion SQL et une Transaction, s'il arrive une exception, comment faire pour disposer l'objet??

    Exemple:

    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
    16
    17
    18
    19
    20
    Try
                    Using Connection = GetMyConnection()
     
                            Connection.Open()
     
                            Using Transaction = Connection.BeginTransaction
     
                                    ...ExecuteMyQuery...
     
                                    Transaction.Commit()
     
                            End Using
     
                    End Using
     
                Catch ex As Exception
    (Connection et Transaction n'existe pas ici, comment les liberer??)
     
                    Throw ex
                End Try
    Merci.

  2. #2
    Expert éminent Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 198
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 198
    Par défaut
    using sert à ca
    dès la sortie du bloc using, peu importe la manière (meme par une erreur qui sort donc du bloc) l'objet est disposé

    sinon l'autre méthode c'est

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    dim c as connexion
    try
      c= new connexion
      'traitement
    catch
     'erreur
    finally
     if c isnot nothing then c.dispose
    end try
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  3. #3
    Membre actif
    Inscrit en
    Juin 2004
    Messages
    75
    Détails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 75
    Par défaut
    D'accord, merci, je n'etais pas certain, j'ai vu plusieurs site où ils cherchaient a s'assurer du dispose, meme avec l'utilisation du Using... ca m'a mit un doute en tete et j'ai pas trouvé de reference precise sur msdn...

    Merci

  4. #4
    Expert éminent Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 198
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 198
    Par défaut
    Citation Envoyé par Arkal Voir le message
    D'accord, merci, je n'etais pas certain, j'ai vu plusieurs site où ils cherchaient a s'assurer du dispose, meme avec l'utilisation du Using... ca m'a mit un doute en tete et j'ai pas trouvé de reference precise sur msdn...

    Merci

    pourtant tu tapes using, tu fais f1 et c'est écrit que ca se comporte comme un try finally ...


    Citation Envoyé par Redouane Voir le message
    ou tu peux mettre dans finally du code de Pol63, une condition sur le statut du connection :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     If (c.State <> ConnectionState.Open) Then
                    c.Close()
                    c.Dispose()            
               End If
    ca c'est pas trop utile, dispose fait le close ...
    vaut mieux tester s'il est pas à nothing, ca évitera une erreur dans le finally sur l'accès à c.State

    le using reste le mieux ...
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  5. #5
    Membre chevronné Avatar de Redouane
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    435
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Octobre 2003
    Messages : 435
    Par défaut
    ou tu peux mettre dans finally du code de Pol63, une condition sur le statut du connection :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     If (c.State <> ConnectionState.Open) Then
                    c.Close()
                    c.Dispose()            
               End If

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

Discussions similaires

  1. Builder n'accepte pas try/catch/__finally
    Par Rodrigue dans le forum C++Builder
    Réponses: 3
    Dernier message: 18/04/2005, 13h15
  2. __try __finally et try catch
    Par buzzz dans le forum C++
    Réponses: 6
    Dernier message: 19/02/2005, 15h31
  3. [debutant sous eclipse] surround with try catch
    Par Alwin dans le forum Eclipse Java
    Réponses: 3
    Dernier message: 26/06/2004, 20h03
  4. [try-catch] relancer les instruction du bloc try
    Par nounou dans le forum Langage
    Réponses: 11
    Dernier message: 12/05/2004, 11h23
  5. Exception & Try..catch
    Par PurL dans le forum C++Builder
    Réponses: 2
    Dernier message: 11/12/2002, 15h35

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