私の.NETメソッドが、指定された引数と現在のオブジェクト状態に基づいて2つ以上の例外のうちの1つをスローする可能性がある場合のベストプラクティスを知りたいと思います。どの例外が優先されるべきか、どうすればそれを決定できますか?.NETメソッドが選択肢を持っている場合、最初にスローする例外はありますか?
一般的なケースは最高だろうのための答えが、ここで私の質問を説明するために例を示します
は、私はオブジェクトパラメータを受け取るメソッドを持っていると仮定します。このパラメータは、メソッドがその作業を行うために呼び出される必要があるプロパティやメソッドを持っているので、nullにすることはできません。この場合、ArgumentNullException
がスローされる可能性があります。
また、私のメソッドがクラス上にあるとします。そのクラスのインスタンスは、コールが有効であるために特定の状態にある必要があります。そうでなければ、ここにInvalidOperationException
が投げられる可能性があります。
ここで、クラスインスタンスも無効な状態にある間にnull引数を指定してメソッドを呼び出す場合を考えてみましょう。どの例外を投げるべきですか、ArgumentNullException
またはInvalidOperationException
?なぜ?