代码之家  ›  专栏  ›  技术社区  ›  mobibob

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

  •  3
  • mobibob  · 技术社区  · 14 年前

    这可能是一个关于异常处理的可笑的Java问题,但是我有一个UI actor(Android活动)正在向ContentProvider的子类请求服务。子类希望在sd卡已满、sd卡丢失、网络i/o错误等情况下抛出一些异常。但是,当我编写CP子类以抛出异常时,编译器会将异常添加到CP类中。显然,我不想修改基类,但我希望UI捕捉子类的异常。

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

    3 回复  |  直到 14 年前
        1
  •  3
  •   Peter Tillemans    14 年前

    您只需要声明并捕获“checked exceptions”。您不需要声明或显式地捕获RuntimeExceptions。因此,您可以抛出RuntimeException并在层次结构中随时捕获它。

        2
  •  8
  •   jrharshath    14 年前

    你可以扔 Unchecked exceptions

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

        3
  •  6
  •   Andy Thomas    14 年前

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

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

    推荐文章