如何处理在新对象上出现异常的自定义事件



我正在创建一个新对象,该对象将字符串值作为唯一的构造函数传递。

Dim o As New Widget("widgetname")

在我的 Widget 构造函数中,发生了异常,我提出了一个事件和事件处理程序。

Public Class Widget
    Public Event ConnectionException As EventHandler
    Sub New(ByVal name As String)
        _name= f
        RaiseEvent ConnectionException(Me, New EventArgs())
    End Sub
End Class

在调用 Widget 的页面上,我创建对象,声明侦听器

Dim o = New Widget("widgetname")
AddHandler o.ConnectionException, AddressOf ConnectionError

和处理程序例程。

Sub ConnectionError(ByVal sender As Object, ByVal e As EventArgs)
    Response.Write("Computer says no.")
End Sub

从逻辑和语法上讲,我认为这是有道理的,但没有显示任何内容,并且显示了异常错误。

我在引用事件处理程序时是否做错了什么?

首先,在连接连接错误事件之前在代码中调用构造函数。 理论上,如果初始化构造函数时出错,则不会触发该事件。

我会考虑将连接开口移动到打开的子中。 这样,在初始化对象后,您可以连接事件,然后调用 open(很像 IDbConnection 的工作原理,尽管它只是抛出一个异常并且不会引发任何事件)。

您在构造函数中引发事件,但在构造函数完成之前不会附加事件处理程序,因此在您开始侦听它时,事件已经来来去去。 事件无法解决这个问题,因为在获得对对象的引用之前,您无法处理对象的事件,而在构造函数完成之前无法拥有该对象。 您需要改为在构造函数中设置一个属性,然后在创建对象后对其进行测试。

相关内容

  • 没有找到相关文章

最新更新