处理WPF自定义控件库中的所有异常

时间:2016-04-25 17:24:41

标签: c# wpf

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

  

Application.DispatcherUnhandledException事件

与解释herehere一样。

我的问题是:

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

更重要的是,我的库将用于非基于.net的应用程序。所以我无法在主应用程序中定义Application.DispatcherUnhandlerException,因为它没有。

有没有办法在dll级别创建它?

2 个答案:

答案 0 :(得分:3)

恕我直言,你不想要这个。无论它是否可能。你不希望异常在libs中安静地死去。使用您的库的客户应该决定如何处理您的例外。也许他们想要记录它。将其发送到网络API。将其存储在数据库中。随你。你应该只处理你的lib实际可以处理的libs中的特定异常。其余的你应该冒泡。

答案 1 :(得分:0)

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

如果您确实想这样做,请将此代码添加到您的某个类中的静态初始化程序中,以确保任何使用该控件库的人都可以使用该代码:

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
 }