我已经遇到过这几次了,而且我认为.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
是该函数抛出的异常 - 这是将此情况视为最佳异常吗?