4

メインファイル:

Window window = new MyDialogWindow();
try
{
    window.ShowDialog();
}
catch
{
    // This is never called !
}

MyDialogWindow で:

private void MyDialogWindow_Closing( object sender, CancelEventArgs e )
{
    throw new Exception();
}

終了イベント ハンドラーにスローされた例外が、呼び出し元の catch ブロックに到達しないようです。なぜなのかご存知ですか ?

編集:閉じるボタンを押した後に MyDialogWindow_Closing が呼び出されることを確認したことを言及する必要があります。

EDIT2: AppDomain.CurrentDomain.UnhandledException をリッスンすると、イベントが発生します!

4

1 に答える 1

0

スローされた例外ではなく、.Net例外処理の傘によって通常「キャッチ」されない別の例外が発生していると思います。そのような例外のクラスの 1 つは、構造化エラー処理例外 (SEH) です。これは通常、その実行でクラッシュするアンマネージ コードに問題 (通常はメモリの問題またはポインターの問題) がある場合に発生しますが、.Net 例外にバブルアップすることはできません。処理ストリーム。

Debug->Exceptions に移動し、すべてを確認します。次に、プログラムを実行します。あなたの例外が本当に何であるかをほぼ確実に知ることができます。

トピックについて説明しているこの質問も見て損はありません。

于 2013-10-17T13:22:20.290 に答える