ユーザー入力を解析する場合、例外をスローしてキャッチするのではなく、検証メソッドを使用することをお勧めします。.NET BCLでは、これは、たとえばint.Parse
(無効なデータで例外をスローする)とint.TryParse
(false
無効なデータで戻る)の違いになります。
私は自分でデザインしています
Foo.TryParse(string s, out Foo result)
メソッドと私は戻り値がわからない。bool
.NET独自のTryParse
メソッドのように使用することもできますが、エラーのタイプ、つまりに解析できなかった正確な理由について s
はわかりませんFoo
。(たとえば、s
括弧Bar
が一致していない、文字数が間違っている、対応するがないBaz
など)
APIのユーザーとして、操作が失敗した理由を通知せずに成功/失敗のブール値を返すだけのメソッドは嫌いです。これにより、推測ゲームのデバッグが可能になり、ライブラリのクライアントにもそれを課したくありません。
私はこの問題の多くの回避策(ステータスコードを返す、エラー文字列を返す、エラーパラメータを出力パラメーターとして追加する)を考えることができますが、それぞれに欠点があり、また、 .NET Frameworkの。
したがって、私の質問は次のとおりです。
(a)例外をスローせずに入力を解析し、(b)単純なtrue / falseブール値よりも詳細なエラー情報を返す.NET Frameworkのメソッドはありますか?
Parse()
です。