2017-08-17 9 views
1

私の.NETメソッドが、指定された引数と現在のオブジェクト状態に基づいて2つ以上の例外のうちの1つをスローする可能性がある場合のベストプラクティスを知りたいと思います。どの例外が優先されるべきか、どうすればそれを決定できますか?.NETメソッドが選択肢を持っている場合、最初にスローする例外はありますか?

一般的なケースは最高だろうのための答えが、ここで私の質問を説明するために例を示します

は、私はオブジェクトパラメータを受け取るメソッドを持っていると仮定します。このパラメータは、メソッドがその作業を行うために呼び出される必要があるプロパティやメソッドを持っているので、nullにすることはできません。この場合、ArgumentNullExceptionがスローされる可能性があります。

また、私のメソッドがクラス上にあるとします。そのクラスのインスタンスは、コールが有効であるために特定の状態にある必要があります。そうでなければ、ここにInvalidOperationExceptionが投げられる可能性があります。

ここで、クラスインスタンスも無効な状態にある間にnull引数を指定してメソッドを呼び出す場合を考えてみましょう。どの例外を投げるべきですか、ArgumentNullExceptionまたはInvalidOperationException?なぜ?

答えて

1

InvalidOperationExceptionは、最初の例外が説明されている例でチェックされています。この例の処理シーケンスでは、最初にメソッドを呼び出す前にオブジェクトが特定の状態にあることが必要です。それが適切な状態にない場合、メソッドの入力の検証は無関係です。したがって、ArugmentNullExceptionを投げると、この例の実際の問題は隠されます。

関連する問題