【发布时间】:2011-10-13 20:41:49
【问题描述】:
我正在寻找有关处理事件异常的最佳做法的一些指导。目前,当我的应用程序中抛出异常时,异常消息会显示在一个弹出对话框中,然后应用程序在点击确定后重新启动。我看到的问题是一些第三方库的事件处理程序中发生了很多异常,并且这些异常被吞没并且从未显示,因为它们位于后台线程上。以下是不同人想到的一些解决方案,我想知道其中任何一个是最好的方法。
- 将后台线程转发到应用程序中每个事件处理程序中的 UI 线程。
- 将事件包装在另一个类中,该类对调用事件的每个方法都有一个 try/catch。如果发生异常,catch 会将异常转发给 UI 线程。
- 获取对第三方库的访问权限,并将 try/catch 放在调用事件的位置,然后可以通过全局事件将其转发到主应用程序。
【问题讨论】:
-
发生了什么样的异常?如果它们被吞食了,你怎么知道它们?
-
各种不同的,空引用,集合错误等。我知道它们正在发生,因为我在事件处理程序中抛出了 new Exception() 并且它没有在任何地方被捕获。
标签: c# wpf events c#-4.0 exception-handling