C# WPF-捕获主目录中的异常

C# WPF-捕获主目录中的异常,c#,wpf,exception-handling,C#,Wpf,Exception Handling,在项目WPF中;我发现如果在Main中引发异常,它不会被捕获,因为新应用程序是在引发异常后执行的。如果异常出现在新应用之后,则可以捕获该异常 我想知道我必须在Main中重新匹配它,或者有另一种方法来捕获可用的方法 App.xaml public partial class App : Application { public App() { SetupExceptionHandling(); } private void SetupExcepti

在项目WPF中;我发现如果在
Main
中引发异常,它不会被捕获,因为
新应用程序
是在引发
异常
后执行的。如果
异常
出现在
新应用
之后,则可以捕获该异常

我想知道我必须在
Main
中重新匹配它,或者有另一种方法来捕获可用的方法

App.xaml

public partial class App : Application
{
    public App()
    {
        SetupExceptionHandling();
    }

    private void SetupExceptionHandling()
    {
        AppDomain.CurrentDomain.UnhandledException += (s, e) =>
        {
            //log
        };

        this.DispatcherUnhandledException += (s, e) =>
        {
            //log
        };

        TaskScheduler.UnobservedTaskException += (s, e) =>
        {
            //log
        };
    }

    [STAThread]
    public static void Main()
    {
        try
        {
            throw new Exception();
            var app = new App();
        }catch(Exception ex)
        {
            //log
        }
    }
}
创建两种方法:

一个用于
Main
,另一个用于
App

这看起来很难看,但我想不出更好的办法

public partial class App : Application
{
    public App()
    {
        SetupExceptionHandlingInApp();
    }

    private static void SetupExceptionHandlingInMain()
    {
        AppDomain.CurrentDomain.UnhandledException += (s, e) =>
        {
            //log
        };

        TaskScheduler.UnobservedTaskException += (s, e) =>
        {
            //log
        };
    }

    private void SetupExceptionHandlingInApp()
    {            
        this.DispatcherUnhandledException += (s, e) =>
        {
            //log
        };                      

    }

    [STAThread]
    public static void Main()
    {
        SetupExceptionHandlingInMain();
        var app = new App();
        throw new Exception();
    }

如果在Main而不是App中调用
SetupExceptionHandling
,是否有效?已尝试,但DispatcherUnhandledException适用于App@kennyzx我在Main方法中更新了AppDomain.CurrentDomain.UnhandledException的问题设置处理程序,因为它是针对任何线程中任何未处理的异常而引发的。你可以将另外两个保留在App类中。还有其他方法可以将3句柄放在同一个方法中吗?