来自MSDN:
每个ArgumentException都应该带有导致此异常的参数的名称。
我的问题:如果属性设置器应该抛出ArgumentException
,我应该给它设置setter的参数名称(默认值:value
)还是属性名称?
示例:
Private _myProperty As String
Public Property MyProperty As String
Get
Return _myProperty
End Get
Set(value As String)
If String.IsNullOrEmpty(value) Then
' what I've been doing for the last 2 years
Throw New ArgumentNullException("value", "value cannot be empty")
' what I think I should be doing instead
Throw New ArgumentNullException("MyProperty", "value cannot be empty")
End If
_myProperty = value
End Set
End Property
我希望这是有道理的。你觉得怎么样?
修改
我想另一个解决方案是将value
重命名为更有意义的内容,然后将其用作paramName
的值。但不知怎的,这似乎不是正确的事情。
答案 0 :(得分:3)
根据MSDN上Catching and Throwing Standard Exception Types的示例,您应该将“value”设置为参数名称:
使用value作为property的隐式值参数的名称 setter方法。
所以没关系:
Throw New ArgumentNullException("value", "value cannot be empty")