java - 为什么我们必须为不抛出异常的方法处理异常?

标签 java exception methods handle scjp

给定

public class ToBeTestHandleException{

static class A {
    void process() throws Exception {
        throw new Exception();
    }
  }

static class B extends A {
    void process() {
        System.out.println("B ");
    }
   }



public static void main(String[] args) {
    A a = new B();
    a.process();
   }

  }

为什么要在(a.process())行处理异常?B类的方法process根本不抛出异常? PS:这是一个 SCJP 问题。

最佳答案

您已将 B 实例分配给 A 类型的变量。由于 A.process() 引发异常,因此您的代码需要处理这种可能性。

假设您将实例传递给另一个接受 A 的方法:

public void doSomething(A a) {
  a.process; // <--- we don't know this is a B, so you are forced to 
             //      catch the exception
}

关于java - 为什么我们必须为不抛出异常的方法处理异常?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17170583/

相关文章:

Java : A query about jar files

c# - 实现业务规则的规范模式

javascript - Object.create() JavaScript

python - 如何在没有回溯的情况下重新引发相同的异常?

javascript - JS重命名方法

python - 为什么 str 不能得到第二个参数,而 __str__ 可以?

java - 在 JPA 中使用可嵌入 ID 持久化 OneToMany

java - 使用排序规则对马其顿字母表进行排序

Java GZIPOutputStream : Corrupted gzip with this method

python - 抑制 Python 命令的终端输出