【发布时间】:2014-03-10 08:50:44
【问题描述】:
我的项目中有这个标准代码:
try {
myForm = new MyForm();
Application.Run(myForm);
} catch (Exception e) {
// handle all uncaught exceptions
}
但是,当我的程序中某处出现未处理的异常时,它仍然显示“默认”异常处理程序,并且我的 catch 永远不会被命中。我想将某些致命错误作为已知的致命错误(例如连接丢失)来处理。
【问题讨论】:
-
@Jehof 不完全是。我不想捕获 all 未处理的异常。只是一些致命的,可能发生在程序的任何地方。我仍然希望未知问题未被发现(因为它提供了很好的调试信息)。
-
@BartFriederichs 所有未处理的异常都是致命的
-
@SergeyBerezovskiy 我明白了。我可能没有解释清楚。我的应用程序使用数据库连接并丢失它,并不一定意味着致命(例如,我可以尝试重新连接),但我现在想将其视为致命。问题是,这个异常可以在我的程序中的任何地方抛出(这个错误的基础是一个设计错误,但我现在无法修复它),所以我想抓住它并让它致命,并用用户友好的消息关闭应用程序。
-
@BartFriederichs 如果您在主线程上有数据库操作,您应该能够使用 ThreadException 捕获异常。您也可以使用 AppDomain 的 UnhandledException 事件,请参阅链接问题