Функция не возвращает значение для всех кодов кода. Исключение нулевой ссылки может возникать во время выполнения, когда результат используется

97
9

Я получаю эту ошибку:


Функция 'getkey' не возвращает значение для всех кодов кода. Исключительное исключение ссылки может возникать во время выполнения, когда результат используемый.



к следующему коду:


 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

Я пробовал все возможные решения, и они не работали.
Любая помощь будет оценена.

спросил(а) 2021-01-19T20:46:54+03:00 2 месяца, 4 недели назад
1
Решение
131

Блок Catch не возвращает значение. Измените его так, чтобы он возвращал значение, например:

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

ответил(а) 2021-01-19T20:46:54+03:00 2 месяца, 4 недели назад
75

Никакое значение не будет возвращено, если в этот файл try..catch будет добавлено исключение. Вы должны либо предоставить возвращаемое значение в случае возникновения исключения (возвращая что-то в любом блоке catch, либо вам нужно перестроить исключение.

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

ответил(а) 2021-01-19T20:46:54+03:00 2 месяца, 4 недели назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема