首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >是否可以通过不抛出异常的基类的调用方法抛出java异常?

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

Stack Overflow用户
提问于 2010-09-14 05:09:40
回答 3查看 791关注 0票数 3

这可能是一个关于异常处理的荒谬的问题,但是我有一个UI参与者(一个Android活动),它从我的ContentProvider子类请求服务。当sd-card已满、sd-card丢失、网络i/o错误等时,该子类希望抛出一些异常。然而,当我编写CP-subclass以抛出异常时,编译器提出将这些异常添加到CP类中。显然,我不想修改基类,但我希望UI捕获子类的异常。

讲得通?这个是可能的吗?如果没有,是否有更好的模式让我的服务子类将其可抛出的对象返回到UI?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2010-09-14 05:14:16

你只需要声明和捕获“检查异常”。您不需要声明或显式地捕获RuntimeExceptions。因此,您可以抛出RuntimeException并在层次结构中的任何位置捕获它。

票数 3
EN

Stack Overflow用户

发布于 2010-09-14 05:13:26

您可以抛出Unchecked exceptions,而不必将它们添加到方法的原型中。

未检查的异常是从RuntimeException继承的任何异常。这就是你想做的吗?

票数 8
EN

Stack Overflow用户

发布于 2010-09-14 05:13:15

您可以抛出RuntimeException的子类的实例,编译器不会对其进行检查。

然而,也就是说,空异常规范是基类方法契约的一部分。希望子类满足约定,这样子类实例就可以在使用超类类型的任何代码中使用。(这称为Liskov substitution principle。)

票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3704457

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档