A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 马云 中级黑马   /  2012-3-28 12:47  /  2253 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

catch (IOException|SQLException ex) {
    logger.log(ex);
    throw ex;
}

捕获异常可以这么写,这是不是一个很好的改进呢,再也不用写难懂的嵌套块了
记住只有java 7这个版本才可以用哦。

评分

参与人数 1黑马币 +2 收起 理由
孙宇晨 + 2 赞一个!

查看全部评分

2 个回复

倒序浏览
是的  简洁明了
回复 使用道具 举报
java7还有一个增强throw语句也很好用啊
class FirstException extends Exception {
}
class SecondException extends Exception {
}
public class ExceptionDemo {
        public static void main(String[] args) {
                try {
                        show("fsirst");
                } catch (Exception e) {
                        e.printStackTrace();
                }
        }
       
        public static  void  show(String str) throws FirstException,SecondException {
                try{
                if(str.equals("first")) {
                        throw new FirstException();
                }else {
                        throw new SecondException();
                }
                }catch(Exception e) {
                        throw e;
                }
        }
}
这个例子,try块中只能抛出两种异常,但是因为catch里的类型是 Exception,
在java SE7以前的版本中,在方法声明中throws 只能写Exception,但是在java SE7及以后的版本中,可以在throws后面写FirstException和SecondException
——编译器能判断出throw e语句抛出的异常一定来自try块,
并且try块只能抛出FirstException和SecondException。
所以尽管catch里的异常类型是Exception,编译器仍然能够知道它是FirstException和 SecondException的实例。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马