Bonjour bonjour!

Voila, je developpe un logiciel depuis un ptit moment, comme c est bientot l heure de le mettre en service, je me suis mis a le rendre propre et a mettre du try catch un peu de partout.

J ai donc etudier, lu etc etc.

Vioci un 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
21
22
23
24
25
26
27
28
29
30
31
Public Function Site_name_with_ItemId(ByVal id As Integer) As String
        'Return a site name with a Item ID
        Try
            Form_Main.SqlConnection1.Open()
            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_site FROM Site WHERE ID_site=(SELECT IDFK_site_item FROM Item WHERE ID_item='" & id & "')"
 
            dr_sql = com_sql.ExecuteReader
            Dim ok As String
            If dr_sql.Read() = True Then
                If dr_sql.IsDBNull(0) Then
                    ok = ""
                Else
                    ok = dr_sql.GetString(0)
                End If
            Else
                ok = ""
            End If
            dr_sql.Close()
            Form_Main.SqlConnection1.Close()
            Return ok
        Catch ex As Exception
            MsgBox(ex.Message)
            add_log(ex.Message, "Site_name_with_ItemId")
        End Try
 
    End Function
Une petit fonction qui va chercher une info dans la base de donnees... Tout marche tout va bien...

Mais VB2005, me souligne en gris End Function et me dis :

Function Site_name_with_ItemId doesn't return a value on all paths. A null reference exception could occur at run time when the result is used
Les questions:

-Bien sur que peut etre la function ne retournera peut etre rien (j espere pas) mais c est bien pour ca que je mets un try catch non?
-J ai donc essayer de mettre un Finally avec un return quand meme, mais il aime pas.
- Est ce que je dois ignorer ce warning, ou fais je quelque chose de pas propre?

Merci