1

次のフォームに進む前にログインエラーを処理しようとしていますが、ほとんどの場合、すべてが機能しています。私は1つの問題を抱えています-ネットワーク接続が確立されていないとき、ODBCドライバーはそれ自身の醜いエラーメッセージを提供します。

これが私のコードです:

Try
     ODBCconnection.Open()
     ODBCconnection.Close()
     Me.Hide()
     otherForm.ShowDialog()
Catch ex As Exception
     If ex.Message.IndexOf("ugly network problem message") > -1 Then
         MsgBox("fancy network problem message")
     ElseIf ex.Message.IndexOf("other error message") > -1 Then
         MsgBox("fancy other error message")
     End If
End Try

したがって、「その他のエラーメッセージ」が検出された場合は「ファンシーその他のエラーメッセージ」が表示されますが、「醜いネットワーク問題メッセージ」がキャッチされた場合は、醜いエラーメッセージとファンシーエラーメッセージの両方が表示されます。

ドライバー自体がメッセージを生成していると思いましたが、それを抑制する方法について何かアイデアはありますか?

4

1 に答える 1

3

例外を処理する前に、その特定のODBC例外を処理する必要がありSystem.Exceptionます。

詳細についてのあなたの質問に答えるために...

Try
     ODBCconnection.Open()
     ODBCconnection.Close()
     Me.Hide()
     otherForm.ShowDialog()
Catch oex as System.Data.Odbc.OdbcException
     'Do something with the OdbcException
Catch ex As Exception
     If ex.Message.IndexOf("ugly network problem message") > -1 Then
         MsgBox("fancy network problem message")
     ElseIf ex.Message.IndexOf("other error message") > -1 Then
         MsgBox("fancy other error message")
     End If
End Try

ルールは、例外処理は、より具体的なものからより具体的でないものへ、または派生したExceptionクラスからそれらの基本クラスへと最後まで流れる必要があるということSystem.Exceptionです。つまり、処理する特定の例外がある場合は、例外を処理する前にそれらを処理する必要がありSystem.Exceptionます...

ブロックにブレークポイントを配置するとポップアップするVisualStudio例外ヘルパーでCatch ex As Exceptionは、スローされている例外と、Catch ex As Exceptionブロックの前にキャッチする必要のある例外を正確に確認できます...

例外ヘルパー

スクリーンショットからわかるように、VS例外ヘルパーには例外の正確な名前が表示されます。[詳細の表示]をクリックすると、発生した例外の完全な名前空間など、より多くの詳細が表示されたウィンドウが表示されます。この例外ヘルパーを見ましたか、それとも他のIDEを使用していますか?

于 2013-01-15T18:02:59.983 に答える