如果我的应用程序最终出现异常,我无法处理,我希望它向用户显示错误消息并退出。问题是向用户显示了一个包含选项Details,Continue和Quit选项的异常对话框,如果用户单击Continue,则应用程序在“某种”状态下保持活动状态,这是我不想要的。
要使用最少的代码复制,我刚刚创建了一个Windows窗体应用程序,添加了一个按钮,对于按钮,单击代码只写了:
throw new ApplicationException("I must crash now!!!");
从Debug文件夹,Release文件夹启动编译的exe文件,或从Release文件夹启动exe文件复制到其他地方(如果pdb文件导致问题)并单击按钮我显示详细信息/继续/退出对话框,如果我说继续应用程序保持活动状态。如何阻止继续选项出现?
我的计算机上存在此行为(Vista,Visual Studio 2008,Visual Studio 2010,使用VS2010创建测试应用程序)以及用户计算机(Windows 7)。
答案 0 :(得分:4)
Windows Forms会捕获异常并显示您要避免的对话框。您可以使用Application.SetUnhandledExceptionMode方法将Windows窗体配置为不执行此操作。
答案 1 :(得分:3)
您需要为AppDomain.UnhandledException
事件编写事件处理程序,向用户显示更好的错误消息。
http://msdn.microsoft.com/en-us/library/system.appdomain.unhandledexception.aspx
请记住,Exception可能意味着系统处于未定义状态,因此即使您的错误对话框也可能无法显示......您需要能够优雅地崩溃。
在您的申请的起点:
static void Main() {
AppDomain currentDomain = AppDomain.CurrentDomain;
currentDomain.UnhandledException += errorHandler;
// Then start your app!
}
static void errorHandler(object sender, UnhandledExceptionEventArgs args) {
// Show the user some error, but be prepared for disaster...
// Examine the args.ExceptionObject (which is an Exception)
}