事件处理程序内的异常管理实践

时间:2012-01-05 14:52:19

标签: c# .net exception exception-handling

.NET 4.0,C#

我正在尝试为我的项目添加一些异常管理框架。如果能够,框架会发布数据库的异常。

我已经对异常处理进行了大量的研究,但是我在理解我应该如何处理事件处理程序中发生的异常(即timer.elapsed或异步回调)方面遇到了一些麻烦。每个事件处理程序都应该有一个try catch块吗?

谢谢!

1 个答案:

答案 0 :(得分:15)

事件处理程序始终在其正文中有一个try..catch..finally块,以防止事件处理程序传播异常。此外,事件处理程序应该快速执行,以避免在事件处理程序本身内执行昂贵的IO或数据库操作。

此外,您可以使用Error之类的属性向订阅者指示发生错误(如果是异步调用)。

更多信息