Erreur logique Try Catch

Signaler
Messages postés
10
Date d'inscription
samedi 9 décembre 2000
Statut
Membre
Dernière intervention
10 juillet 2008
-
Messages postés
3275
Date d'inscription
jeudi 3 avril 2008
Statut
Membre
Dernière intervention
14 septembre 2014
-
Voila. J ai ecris des fonctions, et j essai d implementer avec des try catch finally.


J ai donc par exemple la fonction suivantes:

Public Sub Load_ProductType(ByRef combobox As ComboBox)

        'Load product type in combobox and listbox


        Dim com_sql As New SqlClient.SqlCommand

        Dim dr_sql As SqlClient.SqlDataReader

        com_sql.Connection = Form_Main.SqlConnection1

        com_sql.CommandType = CommandType.Text


        com_sql.CommandText = "SELECT  Name_product_type FROM Product_type ORDER BY Name_product_type"

        Try

            Form_Main.SqlConnection1.Open()

            dr_sql = com_sql.ExecuteReader


            Do While dr_sql.Read() = True

                combobox.Items.Add(dr_sql.GetSqlString(0))

            Loop

        Catch ex As Exception


            add_log(ex.Message, "Load_Product")

            Throw

        Finally

            dr_sql.Close()

            Form_Main.SqlConnection1.Close()

            dr_sql.Dispose()

        End Try


    End Sub


J ai un Warning sur dr_sql.Close(). En effet si y a un bug sur: Form_Main.SqlConnection1.Open(), Il va aller au catch puis finally. Il va donc avoir du mal a close quelque chose qui n a pas de valeur....


Y aurai t  il une personne avec une idee lumineuse.

3 réponses

Messages postés
3275
Date d'inscription
jeudi 3 avril 2008
Statut
Membre
Dernière intervention
14 septembre 2014
4
     Try
            Form_Main.SqlConnection1.Open()
            dr_sql = com_sql.ExecuteReader

            Do While dr_sql.Read() = True
                combobox.Items.Add(dr_sql.GetSqlString(0))
            Loop
     dr_sql.Close()
            Form_Main.SqlConnection1.Close()
            dr_sql.Dispose()

        Catch ex As Exception

            add_log(ex.Message, "Load_Product")
            Throw
        Finally
               End Try
Messages postés
10
Date d'inscription
samedi 9 décembre 2000
Statut
Membre
Dernière intervention
10 juillet 2008

Et bien merci d abord.

Mais alors ma question est la suivante:

Si je ne Close() pas dans le finally, que le try leve une exception...

Je ne Close() jamais? N est ce pas important?
Messages postés
3275
Date d'inscription
jeudi 3 avril 2008
Statut
Membre
Dernière intervention
14 septembre 2014
4
tu peux le fermer aussi dans le catch
   Try
            Form_Main.SqlConnection1.Open()
            dr_sql = com_sql.ExecuteReader

            Do While dr_sql.Read() = True
                combobox.Items.Add(dr_sql.GetSqlString(0))
            Loop
     dr_sql.Close()
            Form_Main.SqlConnection1.Close()
            dr_sql.Dispose()

        Catch ex As Exception
  dr_sql.Close()
            Form_Main.SqlConnection1.Close()
            dr_sql.Dispose()

            add_log(ex.Message, "Load_Product")
            Throw
        Finally
               End Try