Java异常:异常myException永远不会在相应的try语句的主体中抛出

我理解这个错误的想法.但我想我不明白这是如何在调用堆栈中工作的.

文件Main.java

public static void main(String[] args) {
    try {
         Function1();
      } catch (myException e) {
      System.out.println(e.getMessage());
    }
}
public static void Function1() {
    Function2();
}

Function2存在于另一个文件中:

File2.java

public void Function2() throws myException {
     ....
}

所以通过几次调用(在调用堆栈中)我有Function2,它指定了“抛出myException”的要求.为什么主函数(错误指向的位置)无法识别我将myException抛出线?

我非常感谢任何关于我的“例外知识”中的“漏洞”的指导.

aitee,

最佳答案 漏洞是Function2声明它抛出异常,但Function1没有. Java并没有深入研究可能的调用层次结构,而是直接通过throws语句中声明的内容.

函数1因为myException是RuntimeException而没有声明抛出而逃脱.

点赞