Java基础:异常捕获顺序
2015-06-22 23:55
453 查看
转载请注明出处:jiq•钦's
technical Blog
public voidtestException(){ int a[] = {1,2,3};int q = 0; try{ for(int i=0;i<a.length;i++){a[i] /= q;} }catch(ArithmeticException h){ System.out.print("ArithmeticException\n"); //执行 }catch(Exception e){ System.out.print("Exception\n"); //不会执行,且必须放在ArithmeticException后面 /** * 范围更大的Exception不但必须放在后面 * 而且放在后面还不会被执行(被前面的范围更小的 * 异常拦截了),那这样还有什意义呢??? */ }finally{System.out.print("finally\n");} } //<span style="color:#3333ff;">output</span> ArithmeticException finally
* 要点1:虽然ArithmeticException继承自Exception,但是当发生ArithmeticException异常
* 并捕获的时候,就只会捕获实际发生的这个异常,并不会因为Exception是其父类而
* 执行Exception那个catch子句。
* 要点2:但是如果你尝试将范围更大的Exception的catch语句放到的catch语句的前面,那么就会发生
* catch子句不可到达的错误“Unreachablecatch block for ArithmeticException.
* Itis already handled by the catch block for Exception”
* 即范围更大的异常(父类)必须放在后面,如果没有继承关系,比如ClassNotFoundException,
* 和ArithmeticException的catch子句之间就无所谓先后关系。
相关文章推荐
- Java基础:抽象类和接口
- Java基础—集合框架
- 11.MyBatis与Spring整合
- Java基础:多态(重载和重写)
- JAVA基础—IO体系分析
- 利用TreeSet,按照姓名长度的大小决定存储的顺序,从长到短排序,如果长度一样,年龄小的在前面,源码
- JDK自带的JVM性能调优监控工具简介
- Spring学习总结(2.3)-Spring MVC:handlerAdapter
- Java基础:初始化和清理
- java设计模式之前
- Spring2.5中的JavaMailSenderImpl、MimeMessageHelper
- Java 后台模拟POST上传
- Java连接MySQL数据库出现乱码的问题
- JAVA基础学习第三天
- Java并发编程-总结-11-20
- (转)Eclipse RCP 插件开发中经常调用的几个方法
- Maven环境配置以及Eclipse安装Maven插件
- ubuntu 下 通过 命令行安装 jdk
- Java-马士兵设计模式学习笔记-建造者模式
- java学习之旅08--浮点数_浮点数误差问题