0

重複の可能性:
未処理の例外が発生した後も実行を続けるにはどうすればよいですか?

SOで同様の質問や回答をたくさん見ましたが、同じではありません。

次のように、キャッチされていないすべての例外をメインで処理しています。

Main では、次のように設定しました。

Application.ThreadException += new ThreadExceptionEventHandler(MainForm_UIThreadException);

Application.SetUnhandledExceptionMode(UnhandledExceptionMode.CatchException);

AppDomain.CurrentDomain.UnhandledException +=
                 new UnhandledExceptionEventHandler(CurrentDomain_UnhandledException);

Application.Run(new MainForm());

例外が発生し、MainForm_UIThreadException または CurrentDomain_UnhandledException でそれらを処理した後、プログラムをデバッガーで実行すると、黄色いデバッガーの矢印は、この例外が実際に発生した行を指しているので、ステップ オーバーできます。つまり、(私にとって) その実行を意味します。コンテキストは失われません。

未処理の例外に対して実行を続行できないことはわかっていますが、この回避は実際には別の場所で処理されます。

現在の関数の実行を継続することは可能ですか?

ありがとうございました

4

2 に答える 2

1

あなたはそうしない。AppDomain の未処理の例外が発生すると、アプリは安定した状態ではなくなります。正確にはどこに再開しますか?その時点に到達した場合、唯一の選択肢は、正当な理由により、終了することです。アプリが正常に動作するように再度実行するようにスケジュールを設定することもできますが、例外をソースで実際に処理し、例外が UnhandledException にならないようにすることをお勧めします。

From:未処理の例外が発生した後も実行を続けるにはどうすればよいですか?

于 2012-12-12T13:23:14.357 に答える
0

WinForms アプリケーションで実行を続けたい場合は、UI イベント ハンドラーで例外を処理する必要があります。

例えば:

private void saveButton_Click(object sender, EventArgs e)
{
    try
    {
        ... call BLL to save data
    }
    catch(Exception ex)
    {
        MessageBox.Show("Failed to save data");
    }
}
于 2012-12-12T13:34:36.133 に答える