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

22,428

Solution 1

The Catch block doesn't return a value. Change it to where it returns a value, like so:

Public Function getkey(ByVal id As String)
        Dim cmd As SqlCommand
        Try
            cmd = New SqlCommand("dbo.getkeydesc", GenLog.cn)
            cmd.CommandType = CommandType.StoredProcedure
            cmd.Parameters.AddWithValue("@id", id)
            Dim r As SqlDataReader = cmd.ExecuteReader()
            If r.HasRows Then
                Return True
            Else
                Return False
            End If
        Catch ex As Exception
            MsgBox(ex.ToString)
            Return False
        Finally
            ' If Not cn Is Nothing Then cn.Close()
        End Try
    End Function

Solution 2

No value will be returned if an exception is thrown in that try..catch block. You either need to provide a return value in case an exception is thrown (by returning something in either the catch block, or you need to rethrow the exception.

Public Function getkey(ByVal id As String)
        Dim cmd As SqlCommand
        Try
            cmd = New SqlCommand("dbo.getkeydesc", GenLog.cn)
            cmd.CommandType = CommandType.StoredProcedure
            cmd.Parameters.AddWithValue("@id", id)
            Dim r As SqlDataReader = cmd.ExecuteReader()
            If r.HasRows Then
                Return True
            Else
                Return False
            End If
        Catch ex As Exception
            MsgBox(ex.ToString)
            ' Either do this:
            ' Return False
            ' or this:
            ' Throw ex
        Finally
            ' If Not cn Is Nothing Then cn.Close()
        End Try
    End Function
Share:
22,428
HelpASisterOut
Author by

HelpASisterOut

Program-err.

Updated on July 09, 2022

Comments

  • HelpASisterOut
    HelpASisterOut almost 2 years

    I'm getting this error:

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

    to the following code:

     Public Function getkey(ByVal id As String)
                Dim cmd As SqlCommand
                Try
                    cmd = New SqlCommand("dbo.getkeydesc", GenLog.cn)
                    cmd.CommandType = CommandType.StoredProcedure
                    cmd.Parameters.AddWithValue("@id", id)
                    Dim r As SqlDataReader = cmd.ExecuteReader()
                    If r.HasRows Then
                        Return True
                    Else
                        Return False
                    End If
                Catch ex As Exception
                    MsgBox(ex.ToString)
                Finally
                    ' If Not cn Is Nothing Then cn.Close()
                End Try
            End Function
    

    I tried all possible solutions and they didn't work. Any help would be appreciated.