假设我们有一个构造函数/方法在不同的场合抛出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
的情况下,检查提供的原因,或使用不同类型的异常(这在例如解析方法中似乎不合适)。这个问题有一般解决方案吗?
答案 0 :(得分:1)
你可以为这两种情况编写自己的特定异常,从而扩展illegalArgumentException
编辑:正如Alex Shesterov已经说过的那样
答案 1 :(得分:0)
您可以在catch块中查看e.getMessage()
。