可能重复:
How do I continue running after an unhandled exception?
我在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实际上是在其他地方处理的。
是否可以继续执行当前功能?
谢谢
答案 0 :(得分:1)
你没有。当您收到AppDomain未处理的异常时,您的应用就是 不再处于稳定状态。你究竟要回到哪里?什么时候 你已经达到了这一点,你有充分的理由,唯一的选择就是 出口。您可以合理schedule yourself再次运行以确保 该应用程序回来了,但更好的想法是实际处理 来源的例外,并防止它成为一个 UnhandledException。
答案 1 :(得分: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");
}
}