では、呼び出し元がXMLなどの構成ファイルを渡すことを期待する関数を記述しています。次に、この指定されたファイルを解析して何かを抽出し、それを返します。
この関数では、(少なくとも)2つの「悪い」ことが起こります。
最初のものは明らかにIllegalArgumentException
です。しかし、2番目のケースがどのような例外になるかはわかりません。入力が有効な形式であることを(documentation-contractによって)期待しているので、これもIllegalArgumentException
ですか?または、与えられたパラメータは形式的に正しいので、むしろIllegalStateException
ですが、解析後にのみ、不要な動作が発生するため、これ以上の手順を実行できません。
それとも別のものですか?
どちらでもない。他の人が指摘したように、それは明らかにIllegalStateExceptionではありません。
そして、IllegalArgumentよりも FileNotFoundException または ParseException (またはおそらくXMLParseException)は、「悪いこと」1および2の説明と完全に一致します。
IllegalStateException のJavadocは言う
不正または不適切なタイミングでメソッドが呼び出されたことを通知します
メソッドがいつ呼び出されるか、JVMまたはコンテキストがどのような状態であるかは関係ありません。ファイルが正しくない限り、解析エラーは残ります。したがって、IllegalArgumentExceptionの方が適切であるように思えます。