0

我遇到过几次这种情况,对我来说,.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为该函数抛出的异常——这将是考虑这种情况的最佳异常吗?

4

0 回答 0