黑马程序员技术交流社区

标题: java 7新特性 [打印本页]

作者: 马云    时间: 2012-3-28 12:47
标题: java 7新特性
catch (IOException|SQLException ex) {
    logger.log(ex);
    throw ex;
}

捕获异常可以这么写,这是不是一个很好的改进呢,再也不用写难懂的嵌套块了
记住只有java 7这个版本才可以用哦。
作者: 翟友伟    时间: 2012-3-28 14:08
是的  简洁明了
作者: 和心愿    时间: 2012-3-28 15:23
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的实例。




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2