面试时遇到的try catch finally问题

Quebet 2011-11-07 08:26:30

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不执行啊?

...全文
113 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
LJ911 2011-11-07
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 yanghuiliu 的回复:]
main调用fun时。fun出错了,但是fun的异常被fun自己捕获了,所以fun里面的catch会执行,然后执行finally,因为fun并没有向外抛出异常,而是自己处理了。所以main没有得到错误信息,所以main的catch不会执行,直接执行finally
[/Quote]
+1
24K純帥 2011-11-07
  • 打赏
  • 举报
回复
catch说明程序有异常了~
沭灬望月 2011-11-07
  • 打赏
  • 举报
回复
都回答了,俺来拿分
ro_nice 2011-11-07
  • 打赏
  • 举报
回复
出现异常就会执行
Tirion_Fordring 2011-11-07
  • 打赏
  • 举报
回复
在fun()里已经被catch了
  • 打赏
  • 举报
回复
7楼说的够详细了
oO临时工Oo 2011-11-07
  • 打赏
  • 举报
回复
楼上已经出得很多了,
a107494639 2011-11-07
  • 打赏
  • 举报
回复
已经被捕获啦,除非fun方法throws Exception
Cocos2der 2011-11-07
  • 打赏
  • 举报
回复
main调用fun时。fun出错了,但是fun的异常被fun自己捕获了,所以fun里面的catch会执行,然后执行finally,因为fun并没有向外抛出异常,而是自己处理了。所以main没有得到错误信息,所以main的catch不会执行,直接执行finally
clementxr 2011-11-07
  • 打赏
  • 举报
回复
fun里已经把异常捕获了,如果要main里也catch,就要在定义fun的时候再把异常抛出
小小X 2011-11-07
  • 打赏
  • 举报
回复
在main方法中调用fun方法不会产生异常,所以也就没什么异常可以catch的了
艳沐石 2011-11-07
  • 打赏
  • 举报
回复
你在fun函数中,已经捕获了异常信息~~如果你还想继续让他上层处理这个异常,你应该把异常继续抛出。


try{
throw new NullPointerException();
}catch(Exception e){
System.out.println("第一个try块!");
throw e; // 把异常信息抛出
}
呢喃的歌声1 2011-11-07
  • 打赏
  • 举报
回复
说错...fun里面已经捕获了..
呢喃的歌声1 2011-11-07
  • 打赏
  • 举报
回复
饿...主方法里面又没抛出异常不会没捕获为什么要输出呢?子类已经捕获了饿.
boxiuzhen 2011-11-07
  • 打赏
  • 举报
回复
因为fun()方法里的异常被捕获了,没有向main()抛出异常,
异常被fun方法消化掉了,main函数没有察觉到

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧