【发布时间】:2017-08-29 20:20:46
【问题描述】:
我有一个 MDI 父/子应用程序。
在 Program.cs 文件中,我有一个针对 ThreadException 和 UnhandledException 的全局异常处理程序。
那些工作正常。
当我在全局级别收到未处理的异常时,在 UnhandledException 处理程序中,我调用 Environment.Exit(1) 来关闭应用程序,因为我不知道应用程序的当前状态。
在子表单中,我“通常”将以下内容添加到事件处理程序中。
try
{
// Some Code
}
catch (Exception ex)
{
HandleException(ex);
MessageBox.Show("Some message");
this.Close();
}
我想知道是否有一种方法可以为我的所有子窗体(我确实有一个它们继承自的基本窗体)添加一个全局异常处理程序,该处理程序可以捕获异常并关闭子窗体而无需关闭整个应用程序。
这样,如果开发人员“忘记”在事件中添加 try catch 块,它不会轰炸整个应用程序。
【问题讨论】:
-
我同意故障转储会很方便。我确实有一个全局异常记录器,它保存堆栈跟踪、一些性能设置等......它们保存在 sql 数据库中以供查看,但我不想仅仅因为有人忘记添加 try catch 就杀死应用程序就像将字符串放在数字文本框中一样简单。
标签: c# winforms exception-handling