作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
假设我们有一个构造函数/方法,它会在不同情况下抛出 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
的情况下,检查提供的原因,或使用不同类型的异常(这在例如解析方法中似乎不合适) )。这个问题有通用的解决方案吗?
最佳答案
您可以为这两种情况编写自己的特定异常,从而扩展非法参数异常
编辑:正如亚历克斯·谢斯特罗夫已经说过的
关于java - 如何判断是哪一个抛出了同类型的异常?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47123429/
假设我有一个 union u,其中有两个相同类型(例如 int)的成员 a 和 b。 union u{ int a,b; char c; }; 如果我写入a,按值将它传递给函数,函数从
我是一名优秀的程序员,十分优秀!