在java的世界里,一切皆对象。所以异常也是对象。
但对象与对象也有不同,异常对象有其特殊的使用场景的方法,需要特殊学习一下。
以下是学习core java的一些体会和笔记。
1.异常的作用
异常是对程序可能遇到或已经遇到的问题的提醒或者说明,以便解决问题,继续执行程序。
2.异常的分类
一切类都是从Object继承而来。异常也不例外
继承结构:
Object
|
Throwable
/ \
Error Exception
/ \
RuntimeException other Exception
Error类属于jvm或者java内部错误,我们对其没有掌控力,如果遇到只能重启
Exception有很多子类,其中RuntimeException是其中一个,表示运行时异常,下面也有很多子类,主要包括比如空指针引用,数组越界,错误的类型转化等。这些Exception是可以避免的,而且避免的责任是由写该段代码的人负责
其他的other Exception属于另一类。不是java错误,也不是写该段代码的人负责,而是调用这段代码的人负责。
比如我是生产菜刀的,如果菜刀有质量问题,那么是我的责任,如果买菜刀的人拿菜刀砍铁棍,导致菜刀坏掉,与我无关,但我可以提醒买菜刀的人,这个菜刀不能砍太硬的东西。这个提醒就是声明异常。下面再讲。
Error+RuntimeException统称UncheckException。Exception类下面的其他Exception成为CheckedException。
这里是否check指的是编译器check,一切编译器check了的都要声明,编译器没有check的都不用声明。
3.针对Exception的对策:
a.声明异常
声明异常,加在方法名后面,表明编译器已经check了,这个方法可能会产生这个异常,要注意。
格式如下:
public Image loadImage(String s) throws IOException
public Image loadImage(String s) throws FileNotFoundException,EOFException
要声明所有check的异常,也就是可能发生的异常
注意:子类重写超类的方法时,子类声明的异常不能大过父类的异常
(未完待续)