2012-01-15 6 views
0

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

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 
+0

Не могли бы вы высказать свое исключение? –

ответ

1

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

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

Throw New Exception(MsgBox(ex.Message)) 

Если вы хотите, чтобы окно сообщения, а затем просто использовать

MsgBox(ex.Message) 

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

Throw 

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

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

Смежные вопросы