Обработка исключений при выполнении хранимой процедуры - PullRequest
0 голосов
/ 15 января 2012

Когда я использую функцию ниже, она показывает сообщение об ошибке, но все равно выдает ошибку, говорящую, что исключение не обработано. почему?

Public Function DepartmentDelete(ByVal DepartmentID As Integer) As DataTable

    Try
        Using con As New SqlConnection(CMClass.GetConnectionString())
            Dim ds As DataTable = New DataTable
            con.Open()
            Dim command As SqlCommand = New SqlCommand("Department_Delete", con)
            command.Parameters.AddWithValue("@DepartmentID", DepartmentID)
            command.CommandType = CommandType.StoredProcedure
            Dim adapter As SqlDataAdapter = New SqlDataAdapter(command)
            Dim table As DataTable = New DataTable
            adapter.Fill(ds)
            Return ds
            con.Close()
        End Using
    Catch ex As SqlException
                 Throw New Exception(MsgBox(ex.Message))
        End
    End Try

End Function

1 Ответ

1 голос
/ 15 января 2012

Ваш обработчик исключений правильно перехватывает SQLException.

Проблема в следующей строке в вашем обработчике:

Throw New Exception(MsgBox(ex.Message))

Если вам нужно окно сообщения, просто используйте

MsgBox(ex.Message)

Если вы хотите всплыть исключение, вы должны использовать строку

Throw

Не помещайте ex в конце броска, так как это создаетновое исключение (в частности, полная трассировка стека) вместо того, чтобы перебрасывать старое, маскируя тем самым некоторые детали актуальной проблемы.

Кроме того.Если вы решите повторно сгенерировать исключение, вам нужно будет перехватить его снова где-нибудь в стеке, иначе вы все равно получите необработанные сообщения об исключении.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...