我有以下情况。
我有一个 Java 类,它继承自另一个基类并覆盖了一个方法。基本方法不会抛出异常,因此没有 throws ...
声明。
现在我自己的方法应该能够抛出异常,但我可以选择
- 吞下异常或
- 添加抛出声明
两者都不令人满意,因为第一个会默默地忽略异常(好吧,我可以执行一些日志记录),第二个会因为不同的方法头而产生编译器错误。
public class ChildClass extends BaseClass {
@Override
public void SomeMethod() {
throw new Exception("Something went wrong");
}
}
原文由 Jürgen Steinblock 发布,翻译遵循 CC BY-SA 4.0 许可协议
如果你真的想的话,你可以抛出未经检查的异常而不必声明它们。未经检查的异常扩展
RuntimeException
。扩展Error
的 Throwables 也未选中,但只能用于完全无法处理的问题(例如无效的字节码或内存不足)。作为一个具体案例,Java 8 添加了
UncheckedIOException
用于包装和重新抛出IOException
。