这可能是一个关于异常处理的荒谬的问题,但是我有一个UI参与者(一个Android活动),它从我的ContentProvider子类请求服务。当sd-card已满、sd-card丢失、网络i/o错误等时,该子类希望抛出一些异常。然而,当我编写CP-subclass以抛出异常时,编译器提出将这些异常添加到CP类中。显然,我不想修改基类,但我希望UI捕获子类的异常。
讲得通?这个是可能的吗?如果没有,是否有更好的模式让我的服务子类将其可抛出的对象返回到UI?
发布于 2010-09-14 05:14:16
你只需要声明和捕获“检查异常”。您不需要声明或显式地捕获RuntimeExceptions。因此,您可以抛出RuntimeException并在层次结构中的任何位置捕获它。
发布于 2010-09-14 05:13:26
您可以抛出Unchecked exceptions,而不必将它们添加到方法的原型中。
未检查的异常是从RuntimeException继承的任何异常。这就是你想做的吗?
发布于 2010-09-14 05:13:15
您可以抛出RuntimeException的子类的实例,编译器不会对其进行检查。
然而,也就是说,空异常规范是基类方法契约的一部分。希望子类满足约定,这样子类实例就可以在使用超类类型的任何代码中使用。(这称为Liskov substitution principle。)
https://stackoverflow.com/questions/3704457
复制相似问题