是否可以通过不抛出异常的基类的调用方法抛出java异常?

mob*_*bob 3 java subclass throwable

这可能是一个关于异常处理的荒谬的Java问题,但我有一个UI actor(一个Android Activity),它从我的ContentProvider子类请求服务.当sd-card已满,sd-card缺失,网络i/o错误等时,子类想要抛出一些异常.但是,当我编写CP子类来抛出异常时,编译器提供添加异常CP班.显然,我不想修改基类,但我希望UI能够捕获子类的异常.

合理?这可能吗?如果没有,我的服务子类是否有更好的模式将其throwable对象返回到UI?

jrh*_*ath 8

您可以抛出Unchecked exceptions而无需将它们添加到方法的原型中.

未经检查的异常是从中继承的任何异常RuntimeException.那是你想做的吗?


And*_*mas 6

您可以抛出RuntimeException的子类实例,这些实例不会被编译器检查.

但是,话虽如此,空异常规范是基类方法的一部分.子类最好满足契约,因此子类实例可以在任何使用超类类型的代码中使用.(这被称为利斯科夫替代原则.)