2012-01-05 111 views
2

.NET 4.0,C#事件处理程序中的异常管理实践

我试图在我的项目中添加一些异常管理框架。如果可以的话,该框架发布数据库异常。

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

谢谢!

回答

10

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

此外,您可以使用像Error这样的属性向事件的订阅者指出发生了错误(在发生异步调用的情况下)。

更多信息