2012-01-15 10 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をキャッチされました。

問題は、あなたのハンドラに次の行にある:あなたがメッセージボックスをしたい場合は、その後、バブルにあなたがすべき例外をしたい場合は、単に

MsgBox(ex.Message) 

を使用し、

Throw New Exception(MsgBox(ex.Message)) 

行を使用する

Throw 

exを投げてこれは古いものを再スローするのではなく、新しい例外(特に完全なスタックトレース)を作成し、それによって実際の問題のいくつかの詳細を隠します。

さらに、例外を元に戻すことを選択した場合は、スタックのどこかでもう一度それをキャッチする必要があります。そうしないと、未処理の例外メッセージが引き続き発生します。

関連する問題