c# - WPF - 在 Main 中捕获异常
问题描述
在项目WPF中;我发现如果在 中引发异常Main
,它不会被捕获,因为new App
在引发之后执行exception
。如果exception
之后出现new App
,它可以被抓住。
我想知道我必须重新捕捉它,Main
或者有另一种方法可以捕捉它可用的方法。
应用程序.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
}
}
}
解决方案
创建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();
}
推荐阅读
- java - 减少 Spring Boot 中的 JSON 响应
- python - pygame.display.update(); pygame.error:视频系统未初始化
- python - GCP us-east4 中对等方的间歇性 104 连接重置
- reactjs - ReactJs:是否可以在其他组件的 return() 中包含一个组件 '/posts/[id].tsx?
- javascript - *已修复 *JavaScript 图像压缩器不适用于某些图像 - 所有使用的图像都是 .jpg
- java - 如何检查 JavaFX 中两个 ImageView 对象之间的冲突
- linux - Ubuntu ecryptfs 活动目录
- android - Android Studio Flutter - 警告:另一个模拟器仍在运行 - Windows 10
- flutter - Flutter 将数据从 listview 传递到其他 Screen
- ruby-on-rails - 跟踪用户每日登录功能 Ruby on Rails