javaSE7有关异常处理有关
2015-11-22 20:04
357 查看
今天在学习java7并发编程的时候,学到了在异常方面java7做出的改进。
首先就是多了个AutoCloaseable接口,实现该接口的类,在try代码块的特殊位置,再抛出异常时会自动关闭资源。还有就是解决没有共同父类的多个异常,但是有相同的处理方法的解决方案。下面以代码为例进行说明:
点击Run,结果如下图所示:
很明显看以看出:在调用test方法时抛出异常,并且调用了close方法。下面我们修改代码:
结果如下图所示:
可以看出在调用test方法抛出异常的时候,并没有调用close方法。
java7的这一改进,解决了代码块在抛出异常时,资源没发关闭的问题。这里要是使用这一新特点,需要注意二点:
第一,你的类必须要继承AutoCloseable类。
第二,代码必须放在try后面的小括号里,而不是花括号的里面。
注意好这二点,就可以很好,很方便的运用这个新特征了。
下面说第二个问题,就是如果代码块抛出多个异常时,但是有相同的出错处理逻辑代码。当他们有共同父类的时候,我们只要catch他们的父类就可以了,写出错处理代码。但是如果他们没有共同父类的时候怎么解决呢。哈哈,java7又给了我们新的特色。瞧下面代码:
就是如此简单,用竖杠分开就可以。
好了,今天就介绍到这里。
首先就是多了个AutoCloaseable接口,实现该接口的类,在try代码块的特殊位置,再抛出异常时会自动关闭资源。还有就是解决没有共同父类的多个异常,但是有相同的处理方法的解决方案。下面以代码为例进行说明:
public class Main{ private static class Test implements AutoCloseable{ @override public void close() throws Exception{ throw new Exception("throws exception"); //这里主要是为了验证在关闭时抛出异常被谁捕获而写的代码 } public void test(){ throw new Exception("调用时出异常,看是否调用close方法!"); } } public static void main(String[] args){ try(Test test=new Test){ test.test(); }catch (Throwable e) { e.printStackTrace(); } } }
点击Run,结果如下图所示:
很明显看以看出:在调用test方法时抛出异常,并且调用了close方法。下面我们修改代码:
public static void main(String[] args){ try{ Test test=new Test(); test.test(); }catch (Throwable e) { e.printStackTrace(); } }
结果如下图所示:
可以看出在调用test方法抛出异常的时候,并没有调用close方法。
java7的这一改进,解决了代码块在抛出异常时,资源没发关闭的问题。这里要是使用这一新特点,需要注意二点:
第一,你的类必须要继承AutoCloseable类。
第二,代码必须放在try后面的小括号里,而不是花括号的里面。
注意好这二点,就可以很好,很方便的运用这个新特征了。
下面说第二个问题,就是如果代码块抛出多个异常时,但是有相同的出错处理逻辑代码。当他们有共同父类的时候,我们只要catch他们的父类就可以了,写出错处理代码。但是如果他们没有共同父类的时候怎么解决呢。哈哈,java7又给了我们新的特色。瞧下面代码:
File file=new File(""); try { file.getCanonicalFile(); } catch (IOException|SecurityException e) { // TODO Auto-generated catch block e.printStackTrace(); }
就是如此简单,用竖杠分开就可以。
好了,今天就介绍到这里。
相关文章推荐
- 关于使用Spring声明式事务时,在类的内部方法互相调用时,Spring无法拦截内部方法调用,导致事务不起作用的问题研究
- JAVA解析XML文件(四)---DOM4J方式解析
- JAVA解析XML文件(三)---JDOM方式解析
- Java有没有goto?
- 关于Eclipse(64位)下aptana插件安装报错问题解决
- ubuntu14.04 JDK 安装
- Spring MVC 入参支持数组
- java数据封装
- 使用Spring Roo构建项目
- JAVA解析XML文件(二)---SAX方式解析
- java线程内存可见性-实现方式
- Comparable_Comparator_排序工具类JAVA124-125
- JAVA设计模式之策略模式
- Java学习.day_01(关于青蛙跳台阶的问题)
- LUP分解求解线性方程组及求逆矩阵 java
- JAVA解析XML文件(一)---DOM方式
- Spring JMS 使用
- Java中字节与无符号数之间的转换
- 学netstore案例的感想
- [leetode-306]Additive Number(java)