は、我々は別の機会にIllegalArgumentException
秒をスローコンストラクタ/メソッドを持っているとしましょう:どのように同じタイプの例外がスローされたのかを知るには?
class MyClass {
MyClass(char char1, char char2) {
if(condition1 on char1 and char2) {
throw new IllegalArgumentException("condition1 failed");
}
if(different condition2 on char1 and char2) {
throw new IllegalArgumentException("condition2 failed");
}
...
}
}
私は、無効な引数を持つMyClass
のインスタンスを構築したい場合は、どのように私がスローされた例外言うのでしょうか?
try {
MyClass clazz = new MyClass('a', 'a');
} catch (IllegalArgumentException e) {
// which one?
}
醜い溶液は、詳細メッセージをチェックする、またはIllegalArgumentException
の場合には、提供される原因を確認する、または(例えば、解析方法に適切であると思わない)例外の種類を使用することになります。この問題の一般的な解決法はありますか?
を述べたように? –
基本的にオプションがリストされています。 'IllegalArgumentException'をサブクラス化することもできます。 –
@JoeCいくつかのデータを解析したいのですが、私のメソッドはParseExceptionsをさまざまな理由でスローします。私は実際に何が起こったのか知りたいし、適切なメッセージをユーザに提示したいのですが、getMessage()はそうではありません。 – tatsletni