如何编写能够捕获所有错误的表单?

时间:2016-07-05 21:14:24

标签: c#

我想在我的Windows应用程序解决方案中编写一个表单,只要引发任何异常就会捕获该表单。我没有显示那个丑陋的错误页面,而是希望它向用户显示我已经定义的页面。我怎么能这样做?

提前感谢您的回答。

1 个答案:

答案 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
}