Должно ли 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
являясь исключением, выдаваемым этой функцией - будет ли это лучшим исключением для рассмотрения этого случая?