黑马程序员技术交流社区

标题: java RuntimeException异常 [打印本页]

作者: 壁虎    时间: 2013-3-26 00:04
标题: java RuntimeException异常
  1. import java.io.*;
  2. public class Test{
  3.             public static void main(String[] args){
  4.             try{
  5.                 System.out.println(5/0);
  6.             }catch(Exception e){
  7.                   throw new RuntimeException("catch..");
  8.             }finally{
  9.                  throw new RuntimeException("finally..");
  10.            }
  11.        }
  12. }
复制代码
这样的代码 最后打印的是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