【发布时间】:2019-06-15 08:42:53
【问题描述】:
我已经看到了一个类似的问题,但我还没有找到解决方案,因为在我的例子中,放在 try 子句中的函数实际上会引发异常。
class MyExc1 extends Exception { }
class MyExc2 extends MyExc1 { }
class MyExc3 extends MyExc2 { }
public class A1 {
public static void main(String [] argv) {
try {
m();
} catch( MyExc3 k ) {
System.out.print(1);
} catch( Exception u ) {
} finally {
throw( new Exception() );
}
}
static void m() {
try {
System.out.print(2);
throw( new MyExc3() );
}catch( MyExc3 z ) {
System.out.print(3);
}catch( Exception d ) {
System.out.print(4);
}finally {
System.out.print(5);
}
}
}
在我的 try 块中,psv main 调用方法 m(); 打印 2 并引发名为 MyExc3 的异常。然后,此异常应由应打印 3 的catch(MyExcp3 z) 处理,依此类推。但是代码实际上并没有编译:
异常 MyExc3 不会在相应的 try 语句体中抛出
为什么会这样?
【问题讨论】:
-
MyExc3 是经过检查还是未经检查的异常?我猜想检查一下,编译器在抱怨,因为 pax main 永远不会得到那个异常
-
感谢您的快速回归。并欢迎投票水平;-)