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

时间:2010-11-30 19:27:03

标签: java exception try-catch throws

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

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,

2 个答案:

答案 0 :(得分:1)

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

Function1因为myExceptionRuntimeException而没有宣布投掷而离开了。

答案 1 :(得分:1)

你的问题是Function1()没有声明它throws myException - 这意味着应该有2个编译错误:一个关于未捕获或声明的异常,另一个关于捕获异常没有宣布。