如果我 100% 确定该异常永远不会发生,有没有办法告诉 Java 编译器不要抱怨某个异常没有被捕获或抛出?
问问题
123 次
3 回答
10
假设你的意思是检查异常,你不能。通常我会捕获异常,但将其传播到 aRuntimeException
中,例如
try {
// Do something which could, but won't, throw SomeCheckedException
} catch (SomeCheckedException e) {
throw new WorldHasGoneMadException(e);
}
您可能很想为这种场景创建一个特定WorldHasGoneMadException
的例外 - 虽然我不建议使用真实姓名,但类似的东西是合适的。这不仅仅是“发生了意想不到的事情”,而是“哇,我敢打赌,这真的,真的不可能发生”。
哦,当然您的单元测试不会涵盖这种情况。忍受它:)
于 2012-05-25T15:18:37.997 回答
5
我认为乔恩的回答非常好,但我希望assert
已经有这样的WorldHasGoneMadException
课程,因此您无需为它创建特定的例外。
try {
// Do something which could, but won't, throw SomeCheckedException
} catch (SomeCheckedException e) {
assert false : e ;
}
在启用断言的情况下运行测试。如果你得到一些 AssertionErrors,你就知道你的假设有问题。在生产过程中,违反您的假设(您确实对其进行了彻底的测试,因此不会有违反,对吧?)将被默默地吞下。
于 2012-05-25T15:30:51.367 回答
2
如果有一个设置,我很确定没有,我不建议使用它。
我通常在调试“发生”的生产错误时遇到那些“永远不会发生”的事件。;-) 至少我会建议尝试/捕获并记录一些错误级别,以便至少在实际发生的奇怪情况下让您意识到问题。
希望这可以帮助。
于 2012-05-25T15:23:35.577 回答