关于c#:处理WPF自定义控件库中的所有异常

Handling All Exceptions in a WPF Custom Control Library

当需要处理WPF应用程序中的所有异常时,可以使用:

Application.DispatcherUnhandledException event

就像这里和这里解释的。

我的问题是:

我创建了一个WPF自定义控件库,因此没有app.xaml文件。我无法定义application.DispatcherUnhandlerException。

更重要的是,我的库将用于一个非.NET应用程序。所以我不能在主应用程序中定义application.DispatcherUnhandlerException,因为没有。

有没有一种方法可以在dll级别中实现这一点?


我不想这样。不管是否可能。你不希望例外在libs中安静地死去。使用libs的客户应该决定如何处理您的异常。也许他们想记录下来。将其发送到Web API。存储在数据库中。无论什么。您应该只处理您的libs witch中的特定异常,您的lib实际上可以处理这些异常。剩下的你应该冒出来。


我认为您不需要app.xaml来注册这些事件。

如果确实要执行此操作,请将此代码添加到某个类的静态初始值设定项中,该类肯定会被使用控制库的任何人使用:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
if (AppDomain.CurrentDomain != null) {
   AppDomain.CurrentDomain.UnhandledException += CurrentDomain_UnhandledException;
}

if (Dispatcher.CurrentDispatcher != null) {
   Dispatcher.CurrentDispatcher.UnhandledException += CurrentDispatcher_UnhandledException;
}

 static void CurrentDomain_UnhandledException(object sender, UnhandledExceptionEventArgs e) {
   // Do something with the exception in e.ExceptionObject
 }

 static void CurrentDispatcher_UnhandledException(object sender, DispatcherUnhandledExceptionEventArgs e) {
   // Do something with the exception in e.Exception
 }