【发布时间】:2011-11-27 17:47:24
【问题描述】:
我正在编写一个包装不同对象的类库 (主要是 USB 硬件组件的设备驱动程序)
这些设备驱动程序的某些类公开了“OnError”类型的事件:简而言之,如果设备驱动程序中发生运行时错误或其他错误,则触发该事件。比如:
AddHandler oDevice.DriverRunTimeErrorEvent,
AddressOf HandleDriverRunTimeErrorEvent
Private Sub HandleDriverRunTimeErrorEvent(
ByVal sender As Object,
ByVal eventData As DriverRunTimeErrorEventArgs)
'handle the error
End Sub
这个解决方案的好处是,如果发生错误,程序不会停止,但如果我不使用事件,我永远不知道会发生什么。
现在,将设备驱动程序包装到我的类库中,我必须考虑我必须传递给将使用我的类库的客户端的内容以及是否应该这样做。
我可以转发设备驱动程序解决方案并在类库中生成一个新事件。然后客户端应该处理转发的事件。
但我也可以抛出包含所有错误信息的异常
我可以简单地忽略该错误并将其记录在协议文件中。
解决方案 1. 对我来说似乎更强大,我会使用它,但它与 .NET 世界并不“接近”。
解决方案 2. 与程序流异步抛出错误:在客户端应用程序中,我不会有任何可能捕获它的 try-catch 块。换句话说,该类可能会在客户端没有调用该类的任何方法的情况下引发错误。 当然,我可以在应用程序级别捕获所有错误,但无论如何这会在逻辑中引入一些我希望避免的模糊性。
您将如何处理这些 OnError 事件?
【问题讨论】:
-
我已经拆分了我上一个类似的问题 (stackoverflow.com/questions/7585336/…),因为我在 OnError 事件中看到了更多关于单独问题的内容。
标签: .net visual-studio exception exception-handling