JAVA自学笔记(四)异常
2009-08-01 00:26
281 查看
Thinking in JAVA 3rd P312-P352
JAVA的异常可以认为是一种更加严格的C++异常进化。
JAVA的异常类都继承自Throwable类。JAVA的所有方法如果要使用异常(抛出异常)则必须要在方法声明上加上一个异常规范(throws加上异常类列表),这个异常规范规定的异常类范围必须大于等于方法所要抛出的异常类范围。如果类处于继承链当中,那么子类重写了基类方法的异常规范范围必须小于等于基类被重写方法的异常规范范围。这里有个特殊的情况,如果一个异常类继承自RuntimeException则该异常不必存在于异常规范当中,由此带来了一种特殊的处理方法:如果不想再所有调用链上的方法都加上异常规范,我们可以用一个普通异常类来初始化RuntimeException类,然后在想要处理该异常时捕获RuntimeException异常然后调用getCause方法来获取原始的异常类。
同C++一样产生的异常必须由调用链上部的某个方法用try catch块进行捕捉,捕捉异常的时候从catch块开始比较,一旦比较到能够匹配的类(基类或完全匹配)则进入该catch块进行处理,而其他catch块将被跳过。不同于CPP的是JAVA提供一个finally块,finally块表示无论是否有匹配的catch块处理异常该块的代码都必将被执行,一般而言finally块用于进行清理。
JAVA的异常抛出和CPP完全一样,在需要抛出的地方调用类似throw new Exception()语句,然后执行在这里被中断,跳转到相应的catch块执行。
JAVA的异常可以认为是一种更加严格的C++异常进化。
JAVA的异常类都继承自Throwable类。JAVA的所有方法如果要使用异常(抛出异常)则必须要在方法声明上加上一个异常规范(throws加上异常类列表),这个异常规范规定的异常类范围必须大于等于方法所要抛出的异常类范围。如果类处于继承链当中,那么子类重写了基类方法的异常规范范围必须小于等于基类被重写方法的异常规范范围。这里有个特殊的情况,如果一个异常类继承自RuntimeException则该异常不必存在于异常规范当中,由此带来了一种特殊的处理方法:如果不想再所有调用链上的方法都加上异常规范,我们可以用一个普通异常类来初始化RuntimeException类,然后在想要处理该异常时捕获RuntimeException异常然后调用getCause方法来获取原始的异常类。
同C++一样产生的异常必须由调用链上部的某个方法用try catch块进行捕捉,捕捉异常的时候从catch块开始比较,一旦比较到能够匹配的类(基类或完全匹配)则进入该catch块进行处理,而其他catch块将被跳过。不同于CPP的是JAVA提供一个finally块,finally块表示无论是否有匹配的catch块处理异常该块的代码都必将被执行,一般而言finally块用于进行清理。
JAVA的异常抛出和CPP完全一样,在需要抛出的地方调用类似throw new Exception()语句,然后执行在这里被中断,跳转到相应的catch块执行。
相关文章推荐
- Java培训笔记22--自学异常类
- java自学笔记8:异常简介
- Java自学笔记(第十天)-异常-异常的处理-throws-throw-多异常处理-自定义异常-throwable类-RunTimeException类-finally-异常在方法继承中的注意事项-
- 自学Java系列 笔记2 异常处理1
- java自学笔记9:异常练习(模拟借书系统)
- Java自学笔记
- 大龄屌丝自学笔记--Java零基础到菜鸟--014
- 大龄屌丝自学笔记--Java零基础到菜鸟--020
- 【Java学习笔记】自定义Java异常
- Java学习笔记---其他类特性与异常处理
- java系列笔记---异常
- java系列笔记---异常
- java系列笔记---异常
- javaoop——异常笔记(第五章)
- 黑马程序员_JAVA笔记10——面向对象6(异常、包)
- Java编程思想学习笔记_4(异常机制,容器)
- Effective Java 学习笔记(第61条:抛出与抽象相对应的异常)
- java学习笔记---异常
- Java自学笔记(第四天)数组
- java笔记之异常