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