Java例外:异常MyException永远不会被扔进相应的尝试语句中
题
我了解这个错误的想法。但是我想我不明白这是如何工作的。
文件main.java:
public static void main(String[] args) {
try {
Function1();
} catch (myException e) {
System.out.println(e.getMessage());
}
}
public static void Function1() {
Function2();
}
函数2存在于另一个文件中:
file2.java
public void Function2() throws myException {
....
}
因此,通过几个呼叫(呼叫堆栈),我拥有函数2,该功能指定了“抛出myException”的要求。主要功能(错误的位置)如何不认识到我将MyException丢下来?
在我的“例外知识”中“漏洞”所在的任何指导都将不胜感激。
艾特,
解决方案
洞是 Function2
宣布它引发了异常,但是 Function1
才不是。 Java不会通过可能的调用层次结构进行挖掘,而是直接通过您在 throws
语句。
Function1
摆脱不宣布投掷的可能是因为 myException
是一个 RuntimeException
.
其他提示
您的问题是 Function1()
不宣布 throws myException
- 这意味着应该有2个编译错误:一个关于未被抓或声明的例外,一个关于捕获未声明的例外。
不隶属于 StackOverflow