在项目WPF中;我发现,如果在Main
中引发异常,则不会捕获该异常,因为在引发new App
之后执行了exception
。如果exception
在new App
之后,则可能被捕获。
我想知道我必须在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
}
}
}
答案 0 :(得分:-1)
创建2种方法:
在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();
}