我理解这个错误的想法.但我想我不明白这是如何在调用堆栈中工作的.
文件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而没有声明抛出而逃脱.