面试时遇到的try catch finally问题
public class test2 {
static void fun(){
try{
throw new NullPointerException();
}catch(Exception e){
System.out.println("第一个try块!");
}finally{
System.out.println("第一个finally!");
}
}
public static void main(String[] argv){
try{
fun();
}catch(Exception e){
System.out.println("第二个try块!");
}finally{
System.out.println("第二个finally!");
}
}
}
运行结果为:
第一个try块!
第一个finally!
第二个finally!
为什么主方法里的catch不执行啊?
!
[解决办法]
饿...主方法里面又没抛出异常不会没捕获为什么要输出呢?子类已经捕获了饿.
[解决办法]
说错...fun里面已经捕获了..
[解决办法]
你在fun函数中,已经捕获了异常信息~~如果你还想继续让他上层处理这个异常,你应该把异常继续抛出。
try{
throw new NullPointerException();
}catch(Exception e){
System.out.println("第一个try块!");
throw e; // 把异常信息抛出
}
[解决办法]
在main方法中调用fun方法不会产生异常,所以也就没什么异常可以catch的了
[解决办法]
fun里已经把异常捕获了,如果要main里也catch,就要在定义fun的时候再把异常抛出
[解决办法]
main调用fun时。fun出错了,但是fun的异常被fun自己捕获了,所以fun里面的catch会执行,然后执行finally,因为fun并没有向外抛出异常,而是自己处理了。所以main没有得到错误信息,所以main的catch不会执行,直接执行finally
[解决办法]
已经被捕获啦,除非fun方法throws Exception
[解决办法]
楼上已经出得很多了,
[解决办法]
7楼说的够详细了
[解决办法]
在fun()里已经被catch了
[解决办法]
出现异常就会执行
[解决办法]
都回答了,俺来拿分
[解决办法]
catch说明程序有异常了~