黑马程序员技术交流社区
标题:
关于异常抛出后处理顺序不解_谢谢
[打印本页]
作者:
王亚运
时间:
2012-11-15 23:58
标题:
关于异常抛出后处理顺序不解_谢谢
本帖最后由 王亚运 于 2012-11-16 09:16 编辑
关于异常抛出后执行顺序不解。。
这是day10练习4_16题。
原题是考察抛出异常后异常后面代码无法执行到,然后编译失败。
现在把无法执行到代码注释掉。
运行。
是先执行func()抛出的异常被catch()捕捉。
还是先执行fun()方法,被func()方法内的catch()捕捉?
先猜下运行结果吧。
知道的话,望指点。
运行结果:
B D
class Demo
{
public static void func()
{
try
{
throw new Exception();
//System.out.println("A");
}
catch(Exception e)
{
System.out.println("B");//为什么是先运行这个捕捉?
}
}
public static void main(String[] args)
{
try
{
func();
}
catch(Exception e)
{
System.out.println("C");
}
System.out.println("D");
}
}
复制代码
谢谢观看.....
作者:
张利
时间:
2012-11-16 00:52
fun()方法中对于异常的处理是try catch 因此相当于方法内部解决异常,在调用方法的时候是不用再次try catch的
程序的流程是 调用方法fun(),抛出了异常,然后就到了catch捕捉了 ,对于这个异常的处理是打印出了B,到这里fun()方法结束
fun()方法结束后并没有异常被抛出,因此不会执行打印c,接着往下走打印D
作者:
刘菲
时间:
2012-11-16 08:08
1.上面的运行结果应该是BD。
2.在程序运行时会先执行主函数,当主函数执行到func()时,就会去调用func方法,
而在func方法的内部虽然出现异常,但却又在其内部被捕捉到了,所以会输出B。
3.因为func()内部已经将异常处理过了,所以在其方法上就不需要再进行异常声明了。
4.当func()方法执行完后,继续执行主函数,因为没有进行异常声明,所以主函数就没有异常发生,
就不会去执行catch语句。直接执行下面的语句,输出D。
5.以上为个人理解,希望能帮到楼主。
作者:
王玮
时间:
2012-11-16 08:41
本帖最后由 iacky2 于 2012-11-16 09:14 编辑
运行结果:
B
D
运行func()的时候,异常被func()内try catch掉,输出B,而对于fuunc()方法在main程序中并未抛出异常,所以不执行 main中的catch语句块,然后继续执行主程序输出D
作者:
王亚运
时间:
2012-11-16 09:14
张利 发表于 2012-11-16 00:52
fun()方法中对于异常的处理是try catch 因此相当于方法内部解决异常,在调用方法的时候是不用再次try catc ...
谢谢。。。赶脚该给你们加分。。。
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2