我想在我的Windows应用程序解决方案中编写一个表单,只要引发任何异常就会捕获该表单。我没有显示那个丑陋的错误页面,而是希望它向用户显示我已经定义的页面。我怎么能这样做?
提前感谢您的回答。
答案 0 :(得分:0)
值得注意的是,以下内容并不代替应用程序的感应区域中的try .. catch
逻辑。以下不是建议停止使用try ... catch
。下面只是一种处理意外异常的方法,并在应用程序关闭之前显示一些有用的消息(并且可能使用stackTrace向支持发送电子邮件),而不是丑陋的Windows消息(应用程序XYZ停止工作)。
您需要注册处理所有未处理的异常(除了定时器和辅助线程上的异常)。 Program.cs
是个好地方:
static void Main()
{
AppDomain.CurrentDomain.UnhandledException += CurrentDomain_UnhandledException;
Application.ThreadException += Application_ThreadException;
Application.SetUnhandledExceptionMode(UnhandledExceptionMode.CatchException);
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Run(new Form1());
}
private static void Application_ThreadException(object sender, System.Threading.ThreadExceptionEventArgs e)
{
ShowCustomException(e.Exception);
}
private static void CurrentDomain_UnhandledException(object sender, UnhandledExceptionEventArgs e)
{
ShowCustomException(e.ExceptionObject as Exception);
}
private static void ShowCustomException(Exception ex)
{
// show your custom exception form
}