これは、ベスト プラクティスに関する質問です。こちらで質問してよろしいかと思います。API の一部として使用されるインターフェイスを作成しています。getSomeObject()
舞台裏で完了したロジックを持ち、 を返すメソッドがありますSomeObject
。裏では を投げるメソッドを呼んIllegalArgumentException
でいるので、getSomeObject()
メソッドがこの例外をスローする可能性があります。私が抱えている問題は、API のユーザーが API の内部動作に精通しておらず、例外がスローされた理由を理解していないことです。引数はメソッド内で作成され、ユーザーはこの引数が存在することさえ知らないためです。私はそれを文書化しようとしていましたが、この例外の理由は API のユーザーを混乱させるでしょう。だから私の質問は、このような状況に対処する最善の方法は何ですか? この例外を文書化する正しい方法は何ですか?
2 に答える
7
IllegalArgumentException
引数を取らないメソッドから をスローするのは、実に混乱を招きます。
外部の何かgetSomeObject
が適切に定義されていない場合、その例外が発生すると思います。したがって、おそらく をスローしてIllegalStateException
、javadoc に説明を含めて文書化できます。
@throws IllegalStateException If member variable xyz is not initialised.
This can happen if method `init()` has not been
called before `getSomeObject`.
于 2013-02-14T16:44:02.757 に答える
1
内部コードが IllegalArgumentException をスローする可能性があるとのことですが、どのように対処していますか?
ユーザーの入力ミスが原因か?
そうでない場合は、それをキャッチして処理する必要があります。それでもスローする必要がある場合は、ユーザーが理解できる例外に変換する必要があります。
それとも、その可能性は低く、純粋に理論的なものですか?
これがユーザーが処理する必要がある有効な例外シナリオである場合は、適切なチェック済み例外をスローし、インターフェイスで宣言する必要があります
于 2013-02-14T16:46:57.830 に答える