读书笔记——《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类的子类。
未完待续……