黑马程序员技术交流社区
标题:
异常流程问题
[打印本页]
作者:
黑马李杰
时间:
2013-3-29 21:25
标题:
异常流程问题
刚才在网上看到一段代码,发帖子的人说为什么没有打印A,我知道是主函数在运行func()的时候,抛出异常,jvm就会跳出try中的代码,不在执行func()方法后的代码,然后把异常对象当做参数传递给catch,然后执行catch中的代码。那func()方法中的,finally什么时候执行啊,是第一个打印,还是最后打印,解释下原因?是不是太幼稚了这个问题,呵呵
class Test
{
public static void main(String[] args)
{
try
{
func();
System.out.println("A");//此处的A为什么没有打印呢
}
catch(Exception e)
{
System.out.println("C");
}
System.out.println("D");
}
public static void func() throws Exception
{
try
{
throw new Exception();
}
finally
{
System.out.println("B");
}
}
}
作者:
胡志超
时间:
2013-3-29 21:29
finally里面的内容不论是否出现异常,都会在try-catch-finally机制的最后执行
作者:
黑马-郑玉元
时间:
2013-3-29 21:31
不是有道题叫验证finally是在return之前执行的,但finally并不能改变ruturn的返回值!
作者:
杜加璇
时间:
2013-3-29 22:25
finally是一个关闭操作 除非关闭虚拟机 否侧都是会执行的,在try-catch(catch可以没有)-finally的最后执行,但是会在return 之前执行的。
作者:
陈丽莉
时间:
2013-3-31 22:12
若还有问题,继续追问; 没有的话,请将帖子分类改成【已解决】哦~
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2