转换空字符串时,System.Exception“不是T的有效值”是InvalidCastException吗?

时间:2013-04-03 16:45:04

标签: vb.net exception-handling casting .net rethrow

我已经遇到过这几次了,而且我认为.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

我正在考虑用上面的System.Exception catch包装Dim prs[...]Return prs

当字符串只是“”

时,罪魁祸首是System.Exception“不是有效值”异常

它应该是什么例外?或者System.Exception在这种情况下真的是一个很好的例外吗?

编辑:进一步思考,System.Exception只是方法被调用的结果吗? Int32.Parse Method (String)显示FormatException是该函数抛出的异常 - 这是将此情况视为最佳异常吗?

0 个答案:

没有答案