在属性setter中用于ArgumentException的参数名称

时间:2013-02-27 21:47:39

标签: vb.net exception

来自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的值。但不知怎的,这似乎不是正确的事情。

1 个答案:

答案 0 :(得分:3)

根据MSDN上Catching and Throwing Standard Exception Types的示例,您应该将“value”设置为参数名称:

  

使用value作为property的隐式值参数的名称   setter方法。

所以没关系:

Throw New ArgumentNullException("value", "value cannot be empty")