黑马程序员技术交流社区
标题:
java RuntimeException异常
[打印本页]
作者:
壁虎
时间:
2013-3-26 00:04
标题:
java RuntimeException异常
import java.io.*;
public class Test{
public static void main(String[] args){
try{
System.out.println(5/0);
}catch(Exception e){
throw new RuntimeException("catch..");
}finally{
throw new RuntimeException("finally..");
}
}
}
复制代码
这样的代码 最后打印的是finally.. 请问catch代码块中的代码会执行吗?
作者:
程宁宁
时间:
2013-3-26 00:40
catch代码块会执行啊 它就是为了处理try里发生的异常的 !可以这样验证:
在catch(Exception e){
System.out.println("1"); //会打印出 1,说明执行了
throw new RuntimeException("catch..");
}
作者:
聂益飞
时间:
2013-3-26 00:47
楼主这题有点意思!!想问为什么抛了Runtime异常,程序应该停止了!为什么还要执行一定会执行的finally代码块是吧!!!finally代码块不执行的条件是jvm退出!或是调用exit方法退出!!这样就明白了吧!!
作者:
安鹏宇
时间:
2013-3-26 01:06
你能打印出来嘛?
throw肯定打印不出来,try里代码有异常,你catch进行捕获,但你又没处理又抛出了
你抛出后没人接收它,肯定出错,不管这个,finally是肯定会执行的
但你finally里抛出异常也没人接收,会先报finally的错。。。。
如果你把 throw new RuntimeException("finally..");注释掉就会报 throw new RuntimeException("catch..");的错
作者:
123
时间:
2013-3-26 08:54
catch代码块用于捕捉相对应的异常,而本题中的异常时Exception,所以会被catch块捕捉到,finally代码块是一定会被执行的,所以会打印出finally.基于finally的这些特性,所以finanlly代码块一般用于关闭IO资源。
作者:
崔宝东
时间:
2013-3-26 12:32
try{
05. System.out.println(5/0);
06. }catch(Exception e){
07. throw new RuntimeException("catch..");
你写的程序出现异常了,肯定会执行catch代码块中的代码的。
作者:
高顺德
时间:
2013-3-26 13:58
当try块中出现异常后被catch块捕捉到就执行catch块,如果catch块中又出现异常了 但是又没有try来捕捉 那就把当前的异常交与jvm来处理 然后就直接打印出来异常信息了 不会往下执行了
作者:
壁虎
时间:
2013-3-26 14:33
本帖最后由 tuo1254 于 2013-3-26 18:45 编辑
个人认为 catch块中的代码会执行,但是如果catch代码块中 只有throw new RuntimeException("catch..");这么一句代码,则不会执行,因为finally代码块的特性无论如何都会执行,除非你关掉java虚拟机,执行顺序是try--catch--finally--如果遇到throw 和 return 关键字,会先执行finally代码块的内容。然后回去执行rhrow 或者 return 代码。但是finally代码块却抛了运行的异常,程序停止,所以打印的是finally..
作者:
罗平
时间:
2013-3-26 18:16
finally里面的无论是否捕获异常都会执行
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2