C# 如何在未处理的异常上崩溃

C# 如何在未处理的异常上崩溃,c#,wpf,exception,C#,Wpf,Exception,我在一个WPF项目中创建了一些自定义异常,我很确定当它们被抛出时,我不会捕获它们,但我的应用程序也不会崩溃。但该异常记录在输出窗口中 我的自定义异常源于System.Exception,我已经检查了所有try{}catch{}语句,如果它们捕获了我的自定义异常或System.Exception。他们没有一个人这样做。我正在使用Visual Studio 2010,并在32位计算机上运行它,因此这似乎是另一个问题。您可以为AppDomain添加处理程序。未处理的异常事件: AppDomain.Cu

我在一个WPF项目中创建了一些自定义异常,我很确定当它们被抛出时,我不会捕获它们,但我的应用程序也不会崩溃。但该异常记录在输出窗口中


我的自定义异常源于
System.Exception
,我已经检查了所有
try{}catch{}
语句,如果它们捕获了我的自定义异常或
System.Exception
。他们没有一个人这样做。我正在使用Visual Studio 2010,并在32位计算机上运行它,因此这似乎是另一个问题。

您可以为
AppDomain添加处理程序。未处理的异常
事件:

AppDomain.CurrentDomain.UnhandledException += App_UnhandledException;

public void App_UnhandledException(object sender, UnhandledExceptionEventArgs e)
{
    Exception exception = (Exception)e.ExceptionObject;
    Error error = new Error(exception, mainViewModel.StateManager.CurrentUser);        
    mainViewModel.AddError(error); 
}

Error
是一个自定义类,我使用它在数据库中记录错误。如果在此方法中设置断点,则每当抛出任何未捕获的
异常
对象时,执行将在此处跳转。

您如何知道它们未被捕获,您是否尝试过选中异常框,以便即使异常位于try/catch块中,代码也会中断?另外,是代码导致异常在另一个线程上运行(如在任务或后台工作程序中),其中一些东西有检查异常的特殊方法。您是否在后台线程上抛出它们?如果后台线程抛出未处理的异常,我想它们可能只是无声地失败。尝试挂接到一些未处理的应用程序异常处理程序()。此外,如果您的输出窗口报告类似于“first chance exception”的内容,则可能是调试器通知您的,但这些异常可能会被捕获并处理(这可能指向将异常用作流控制的气味)。()你需要展示code@ChrisSinclair这就是.NET1.x的行为。未经处理的异常将终止.NET 2.0及更高版本中的进程。