您的位置:首页 > 编程语言 > Java开发

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块执行。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: