读书笔记——《Java核心技术 卷一》——异常

一、异常处理

程序出现了错误而没有捕获,那么线程将会直接结束。

Error类层次结构描述了Java云从是系统内部错误和资源耗尽错误。应用程序不应该抛出这种类型的对象。如果出现了这样的内部错误,只能够通告用户,并尽力使程序安全地终止。

RuntimeException:由程序本身错误导致的异常,

包含几种情况:

1、类型转换错误

2、数组访问越界

3、访问空指针

属于程序本身的错误,可以避免

和Error类型异常一起被称为未检查异常(没有认真检查才会发生的异常)

IOException:由I/O错误导致的异常,

包含几种情况:

1、试图在文件尾部后面读取数据

2、试图打开一个错误格式的URL

3、试图根据给定的字符串查找Class对象,但是字符串表示的类不存在

有可能是程序运行的环境或者传入错误的参数,具有偶然性,不能完全避免

被称为已检查异常(检查了也没用,还是可能发生)

方法应该在其首部生命所有可能抛出的异常,而不是所有异常

需要抛出异常的情况:

1、调用一个抛出以检查异常的方法

2、程序运行过程中发现错误,并且利用throw语句抛出一个已检查异常

3、程序出现错误,例如,a[-1]=0 会抛出一个ArrayIndexOutOfBoudsException这样的未检查异常

4、Java虚拟机和运行时库出现的内部异常

出现前两种情况之一,则必须告诉调用这个方法的程序员有可能抛出异常。对于可能被他人使用的Java方法,应该根据一场规范,在方法的首部声明这个方法可能抛出的异常。如果可能抛出多个异常,那就必须列出所有异常,用逗号分隔开。

一个方法必须声明所有可能抛出的已检查异常,Error不可控制,RuntimeException应该避免,都不用声明。

子类的异常范围必须比父类小,如果父类没有生命异常,那么子类也不能声明异常。

如果一个类中的一个方法声明将会抛出一个异常,而这个一场是某个特定的类的实例时,则这个方法就有可能抛出一个这个类的异常,或者这个类的任意一个子类的异常。

抛出异常:

1、找到一个合适的异常类

2、创建这个类的对象

3、将对象抛出

一旦方法抛出了异常,这个方法就不可能返回调用者。

创建异常类只需要派生于Exception类或者Exception类的子类。

未完待续……

猜你喜欢

转载自blog.csdn.net/let4897/article/details/82154911