Possible Duplicate:
VS2010 does not show unhandled exception message in a WinForms Application on a 64-bit version of WindowsVS 2012(VB.net)は、64ビット
私がインストールしたWindows 7で未処理の例外を無視し、VS2012を使用して開始されます。以前はVS2008 Expressを使用していました。 VS2012はWin 7 64ビット版で動作しています。 (以前の開発環境はXP 32ビット版でした)。
基本的なリサーチプロジェクト(WinForms、VB)を使ってこれまでのところ、処理されていない例外をVSが無視していることがわかりました。このの最後の行が例外が発生する必要があります
A first chance exception of type 'System.IndexOutOfRangeException' occurred in System.Data.dll
をしかし、コードが実行されているだけに運ぶ:十分
With cmd
.Connection = sqlConn
.CommandType = CommandType.StoredProcedure
.CommandText = "NameOfStoredProcedure"
.Parameters.Add("@TheParameterName", SqlDbType.Int, -1)
.Parameters("@TheParameterNameWithATypo").Direction = ParameterDirection.ReturnValue
確かに、イミディエイトウィンドウを示しています!
[デバッグ/例外]ダイアログでは、すべての例外タイプに対して[スロー]と[ユーザー未処理]のチェックボックスがあります。 「User-Unhandled」にはすべてがチェックされています。私は例外を処理し、処理された例外を壊さないために "Thrown"にチェックを入れたくありません。 (今は、私は試してみません...ブロックをまったくキャッチ - しかし、デバッガは、プロジェクト全体が1つに含まれているかのように動作しています)。
私はすべてのオプションなどを調べましたが、「例外時にブレークをオンにする」オプションは見つかりませんでした。私のコードではありません。私は助けを求めています。これが起こったとき、私は必然的に愚かな間違いを検出するデバッガを信頼できません。
もう1人が見つかったところで、誰かがこの問題に遭遇し、Win64で問題が発生しているように見えたquestionが見つかりました。しかし、VSはWin64では本当に使えないのですか?私はそれをかなり信じることはできませんが、未処理の例外を破ることは効果的ではありません。
編集: ご意見ありがとうございます。私はNeoliskのソリューションを試してみましたが、2つのハンドラの署名が異なっているので、少しのコードを変更する必要がありました:
Public Sub Main()
AddHandler Application.ThreadException, AddressOf ThreadExceptionHandler
Application.SetUnhandledExceptionMode(UnhandledExceptionMode.CatchException)
AddHandler AppDomain.CurrentDomain.UnhandledException, AddressOf UnhandledExceptionHandler
Form1.Show()
End Sub
Friend Sub ThreadExceptionHandler(sender As Object, e As System.Threading.ThreadExceptionEventArgs)
End Sub
Friend Sub UnhandledExceptionhandler(sender As Object, E As System.UnhandledExceptionEventArgs)
End Sub
これは働いていた - ありがとう!しかし、アプリケーションフレームワークを無効にする必要がありました(そうでなければ、アプリケーションはSub Mainを起動として使用できません)。そしてTBH私はあまりにも.NETの初心者でも、その効果/長所/短所が何であるかを知ることすらできません。私があなたが提供したすべてのリンクを読んで、何が起こっているのかを知りましたが、私がそれを避けることができれば関与したくない...
幸いにも、KB976038の修正プログラムを適用してくれました。デバッグモードで例外が発生し、実行が中断され、Form_Loadイベントを実行するコードでは、これが予期したとおりに行われます。これはApplication Frameworkを有効にし、Form1をスタートアップオブジェクトとして使用し、上のコードはコメントアウトします。
EDIT2: いいえ、その修正プログラムは機能しません。元の「悪いパラメータ名」行は、コードを例外で停止させました。しかし、ちょうどこのエラーボックス(なしデバッグ可能性)を引き起こしたDBNull->のInt32変換例外とそれに続くライン:
vshost.exe - Application Error INTERNAL ERROR: Unhandled exception in Debugger::HandleIPCEvent. Event ID=0x246 Exception code=0x0000005, Eip=0x70d58101. Process ID=0xbec (3052), Thread ID=0xb1c (2844).
は、私は本当にすべてのあなたのコメントに感謝 - しかし、私の心に、これは契約ブレーカです:どのように例外がデバッグ可能であると信頼できない場合、開発者はVSを使用できますか?Sub Mainで始めることを覚えておき、何かを開発するたびにこれらの特別な行を置く必要はありません。Form_Loadでコードを使用することはできません。私は、開発OSとしてWin7 64ビットの使用をやめることをお勧めします。
私はVS 2012 on Win7 64bitを使用していますが、私の例外は正常です。ただし、ターゲットとする.Netフレームワークのバージョンを変更してみてください。最新のものを試してください。私は、デバッガが別のフレームワークをデバッグしてからプロジェクトが実行されている場合に、この問題が発生する可能性のあるインスタンスについて読んだことがあります。 – Kratz
@ HansPassant:同じ原因、異なる開始条件。 OPはVS 2012を使用しています。 – Neolisk
VS2012で修正されていません。 VS2021でも修正されません。うまくいけば、これ以上気にする必要はありません。 –