我理解这个错误的想法。但我想我不明白这是如何在调用堆栈中起作用的。
File 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,
答案 0 :(得分:1)
漏洞是Function2
声明它抛出异常,但Function1
没有。 Java没有深入研究可能的调用层次结构,而是直接通过您在throws
语句中声明的内容。
Function1
因为myException
是RuntimeException
而没有宣布投掷而离开了。
答案 1 :(得分:1)
你的问题是Function1()
没有声明它throws myException
- 这意味着应该有2个编译错误:一个关于未捕获或声明的异常,另一个关于捕获异常没有宣布。