4

時々予想される例外をスローするコードの周りに try/catch ブロックを配置しましたが、例外をキャッチしてメッセージ ボックスを表示するのではなく、デバッガーを停止し、例外が処理されていないことを警告します。

例外が発生したときにコードが停止しないように、この例外を処理するにはどうすればよいですか?

ここに画像の説明を入力

Friend myDevInfo As New devInfo

        ''' <summary>
        ''' Closes the device handle obtained with CreateFile and frees resources.
        ''' </summary>
        ''' 
        Friend Sub CloseDeviceHandle()

            Try
                WinUsb_Free(myDevInfo.winUsbHandle)

                If Not (myDevInfo.deviceHandle Is Nothing) Then
                    If Not (myDevInfo.deviceHandle.IsInvalid) Then
                        myDevInfo.deviceHandle.Close()
                    End If
                End If

            Catch ex As System.AccessViolationException
                MsgBox("System.AccessViolationException")
            Catch ex As Exception
                Throw
            End Try

        End Sub
4

3 に答える 3

3

デバッガーが接続されていない場合、try...catchブロックは期待どおりに動作するはずです。
Debug -> Exceptions の下で、デバッガーが中断する例外を定義できます。デフォルトは break on であると思いますAccessViolationException

于 2012-04-25T08:55:45.270 に答える
1

アクセス違反例外は、「破損状態例外」と呼ばれる例外のクラスに分類されます。.Net 4 では、Microsoft はこれらを try .. catch ブロックでキャッチしないように決定しました。彼らの理由は、破損した状態の例外からそれ以上の損傷を引き起こすことなく回復するには理解と注意が必要であり、アプリケーションを閉じた方がユーザーのデータにとってより安全であるということです。

MSDN は、この変更を元に戻す方法を教えてくれます

于 2016-04-06T13:47:09.837 に答える