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 } |