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 中处理它们,黄色调试器箭头指向实际发生此异常的行,所以我可以跳过,这意味着(对我而言)执行上下文不会丢失。

我知道我不能继续执行未处理的异常,但实际上这个 esception 是在其他地方处理的。

是否可以继续执行当前功能?

谢谢

4

2 回答 2

1

你没有。当您收到 AppDomain 未处理的异常时,您的应用程序不再处于稳定状态。你究竟会恢复到哪里?当你到了那个地步,你唯一的选择,有充分的理由,就是退出。您可以合理地安排自己再次运行以确保应用程序恢复运行,但更好的想法是在其源处实际处理异常并防止它成为 UnhandledException。

来自:如何在未处理的异常后继续运行?

于 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 回答