3

来自 MSDN:

每个 ArgumentException 都应带有导致此异常的参数的名称。

我的问题:如果属性设置器应该抛出一个ArgumentException,我应该给它设置器的参数名称(默认值:)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. 但不知何故,这似乎不是正确的做法。

4

1 回答 1

4

根据MSDN 上捕获和抛出标准异常类型的示例,您应该继续将“值”设置为参数名称:

请使用 value 作为属性设置器的隐式 value 参数的名称。

所以没关系:

Throw New ArgumentNullException("value", "value cannot be empty")
于 2013-02-27T21:52:25.060 回答