Winforms应用程序中的未处理异常

时间:2011-02-19 05:23:55

标签: winforms exception unhandled

我有一个简单的WinForms应用程序,用于输入测试用例。自从我将此应用程序升级到.NET 4.0并向标签页控件添加了一个新的标签页以便针对XSD架构验证XML之后,应用程序一直在随机崩溃。我一直无法重现异常。

我的QA人收到的错误是通用的Windows消息:

TestCaseViewer遇到问题需要关闭。对于给您带来的不便,我们深表歉意。

为了尝试解决实际错误,我将以下代码添加到Main方法程序的开头:

        AppDomain.CurrentDomain.UnhandledException += CurrentDomain_UnhandledException;
        Application.SetUnhandledExceptionMode(UnhandledExceptionMode.CatchException);
        Application.ThreadException += Application_ThreadException;

事件处理程序如下所示:

    static void Application_ThreadException(object sender, ThreadExceptionEventArgs e)
    {
        try
        {
            MessageBox.Show(e.Exception.ToString(), @"Thread Exception", 
                MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
        }
        finally 
        {
            Application.Exit();    
        }
    }

    static void CurrentDomain_UnhandledException(object sender, UnhandledExceptionEventArgs e)
    {
        try
        {
            var ex = (Exception)e.ExceptionObject;
            MessageBox.Show(ex.ToString(), @"Unhandled Exception",
                MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
        }
        finally 
        {
            Application.Exit();    
        }
    }

不幸的是,这没有任何帮助,无论如何,错误继续以一种产生未处理错误的方式继续这样做。

有人可以给我任何关于捕获此异常的其他想法吗?

2 个答案:

答案 0 :(得分:10)

尝试将以下内容添加到您的app.config

<runtime>
   <!-- the following setting prevents the host from closing when an unhandled exception is thrown -->
   <legacyUnhandledExceptionPolicy enabled="1" />
</runtime>

答案 1 :(得分:2)

如果您正在使用Visual Studio,则可以将其设置为中断所有未处理的异常,甚至是抛出异常的任何时间,无论是否是它由您的代码处理。

要执行此操作,请从“Debug”菜单中选择“Exceptions”。你会得到一个如下所示的对话框:

Visual Studio Exceptions dialog

如果您真的想要认真,请尝试检查所有方框。然后,从您的QA人员那里找出触发异常的确切操作,并在开发环境中的调试器下运行时完全重现这些操作。每当抛出异常时,Visual Studio都会中断,您将看到有问题的代码行以及完整的堆栈跟踪。

相关问题