Amm*_*mmu 1 java exception-handling
我有以下代码.在这fn2实际上是抛出一个异常,它被捕获在函数本身.在函数中fn1,编译器抱怨未处理的异常,因为fn2声明抛出异常.
为什么会这样?由于异常被捕获,fn2它不应该抱怨对吗?
请解释一下这种行为.
public class ExepTest {
/**
* @param args
*/
public static void main(String[] args) {
ExepTest exT = new ExepTest();
exT.fn1();
}
public void fn1(){
fn2();//compilation error
}
public void fn2() throws Exception{
try{
throw new Exception();
}
catch(Exception ex){
System.out.println("Exception caught");
}
}
}
Run Code Online (Sandbox Code Playgroud)
ins*_*ity 10
编译器不知道/不能知道在运行时不会抛出任何异常,fn2()因为它声明它可能抛出异常,这就是你得到错误的原因.