C# WPF-捕获主目录中的异常
在项目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
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句柄放在同一个方法中吗?