我了解这个错误的想法。但是我想我不明白这是如何工作的。

文件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个编译错误:一个关于未被抓或声明的例外,一个关于捕获未声明的例外。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top