Должно ли System.Exception "не быть допустимым значением для T" при преобразовании пустой строки быть InvalidCastException?

Я сталкивался с этим несколько раз, и мне кажется очень неправильным, что операции.NET должны вызывать исключение System.Exception вместо чего-то более конкретного. Есть ли причина, по которой нельзя сбрасывать этот конкретный экземпляр как InvalidCastException? Разве не уместнее смешивать этот случай с обработчиками InvalidCastException?

Для контекста метод таков:

<System.Runtime.CompilerServices.Extension()> _
Public Function Parse(Of T)(ByVal str As String) As T
    Dim tc As TypeConverter = TypeDescriptor.GetConverter(GetType(T))
    If tc IsNot Nothing Then
        Dim prs As T = tc.ConvertFromString(str)

        Return prs
    Else
        Throw New InvalidCastException("Cannot convert from " & GetType(T).Name & " to String.")
    End If
End Function

и я рассматриваю упаковку Dim prs[...]Return prs с уловом System.Exception выше.

Виновником является исключение System.Exception "недопустимое значение", если строка просто ""

Какое исключение "должно" быть? Или System.Exception действительно хорошее исключение для этого случая?

РЕДАКТИРОВАТЬ: Если подумать, является ли System.Exception просто результатом вызова метода, как это было? Int32.Parse Метод (Строка) показывает FormatException являясь исключением, выдаваемым этой функцией - будет ли это лучшим исключением для рассмотрения этого случая?

0 ответов

Другие вопросы по тегам