调用另一个 class 初始化程序时如何处理错误?
How do you handle errors when calling another class initializer?
我试图在初始化新 类 的同时进行一些错误处理。我对它的设置方式感到惊讶,希望我只是遗漏了一些非常简单的东西。这是我要完成的简单版本:
Public Class TestClass
Public Sub New(ByVal sLink as String)
Try
Me.New(New Uri(sLink))
Catch ex As Exception
MessageBox.Show("Hey, initializing this class failed... Is the URL valid?")
End Try
End Sub
Public Sub New(ByVal uLink as Uri)
MessageBox.Show("Class Initialized Successfully!")
End Sub
End Class
上面显然失败了,因为带有"Me.New(...)"的行必须是第一行。但是我可以这样做,如果有人传递了一个不是有效 Uri 的字符串怎么办?考虑以下因素:
' This would fail and I'd like to catch it somehow
Dim tmp as New TestClass("Hello World!")
' Something like this would pass successfully
Dim tmp as New TestClass("http://somevalidlink.com/")
' And so would this, too.
Dim tmp as New TestClass(New Uri("http://somevalidlink.com/")
我一直在搜索,但似乎找不到任何东西...也许我只是不知道要查找的关键字。任何正确方向的提示都会有很大帮助。
谢谢!
我认为您不需要捕获您 class 不负责的错误。
而是检查输入参数并在参数错误时抛出异常。
通过抛出异常,您将确保 class 将正常工作。
Public Class TestClass
Private _Link As Uri
Public Sub New(ByVal link as Uri)
If link Is Nothing Then Throw New ArgumentNullException(NameOf(link))
_Link = link
End Sub
End Class
如果你想添加通过 String
参数创建实例的功能并且仍然使用参数类型为 Uri
的构造函数,那么你可以创建一个 static/shared 方法来检查字符串并执行你想要的构造函数。
Public Shared Function CreateInstance(link As String) As TestClass
Try
Dim url As New Uri(link)
Return New TestClass(url)
Catch ex As Exception
'Do your error handling
End Try
End Function
我试图在初始化新 类 的同时进行一些错误处理。我对它的设置方式感到惊讶,希望我只是遗漏了一些非常简单的东西。这是我要完成的简单版本:
Public Class TestClass
Public Sub New(ByVal sLink as String)
Try
Me.New(New Uri(sLink))
Catch ex As Exception
MessageBox.Show("Hey, initializing this class failed... Is the URL valid?")
End Try
End Sub
Public Sub New(ByVal uLink as Uri)
MessageBox.Show("Class Initialized Successfully!")
End Sub
End Class
上面显然失败了,因为带有"Me.New(...)"的行必须是第一行。但是我可以这样做,如果有人传递了一个不是有效 Uri 的字符串怎么办?考虑以下因素:
' This would fail and I'd like to catch it somehow
Dim tmp as New TestClass("Hello World!")
' Something like this would pass successfully
Dim tmp as New TestClass("http://somevalidlink.com/")
' And so would this, too.
Dim tmp as New TestClass(New Uri("http://somevalidlink.com/")
我一直在搜索,但似乎找不到任何东西...也许我只是不知道要查找的关键字。任何正确方向的提示都会有很大帮助。
谢谢!
我认为您不需要捕获您 class 不负责的错误。
而是检查输入参数并在参数错误时抛出异常。
通过抛出异常,您将确保 class 将正常工作。
Public Class TestClass
Private _Link As Uri
Public Sub New(ByVal link as Uri)
If link Is Nothing Then Throw New ArgumentNullException(NameOf(link))
_Link = link
End Sub
End Class
如果你想添加通过 String
参数创建实例的功能并且仍然使用参数类型为 Uri
的构造函数,那么你可以创建一个 static/shared 方法来检查字符串并执行你想要的构造函数。
Public Shared Function CreateInstance(link As String) As TestClass
Try
Dim url As New Uri(link)
Return New TestClass(url)
Catch ex As Exception
'Do your error handling
End Try
End Function