7

我有一个简单的 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();    
        }
    }

不幸的是,这并没有帮助,无论是什么错误都会继续这样做,从而产生未处理的错误,该错误正在冒泡到操作系统。

谁能给我有关捕获此异常的任何其他想法?

4

2 回答 2

11

Try adding the following to your app.config

<runtime>
   <!-- the following setting prevents the host from closing when an unhandled exception is thrown -->
   <legacyUnhandledExceptionPolicy enabled="1" />
</runtime>
于 2013-03-11T21:16:21.110 回答
2

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

为此,请从“调试”菜单中选择“异常”。您将看到如下所示的对话框:

  Visual Studio 异常对话框

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

于 2011-02-19T06:20:18.343 回答