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 " is not a valid value" 例外です。

どのような例外が「あるべき」ですか? それとも、System.Exception は本当にこの場合の良い例外なのでしょうか?

編集: さらに考えてみると、System.Exception は単にメソッドがそのように呼び出された結果なのでしょうか? Int32.Parseメソッド (文字列)は、その関数によってスローされた例外であることを示しFormatExceptionています。これは、このケースを考慮するのに最適な例外でしょうか?

4

0 に答える 0