异常类架构图

Throwable 是Java语言中所有错误或异常的超类。下一层为Error和Exception
错误Error
Error类是指Java运行时系统的内部错误和资源耗尽错误,程序不会跑出该类的对象,如果从出现了这样的错误,会告知用户,然后终止运行。
异常Exception
Exception异常有两个分支,一个是RuntimeException运行时错误,一个是CheckException检查异常,编译时异常。
- RuntimeException:如:NullPointerException、ClassCastException。RuntimeException往往是在Java虚拟机正常运行期间抛出的异常的超类,如果出现RuntimeException一定是开发者的错误
- CheckException:如IOException、SQLException。一般是外部错误,这种异常发生在编译阶段,Java编译器会强制程序去捕获此类异常,即会要求你把这端可能出现异常的程序进行 try catch。该类异常一般包括以下几个方面:
- 试图在文件末尾读取数据
- 试图打开一个错误格式的URL
- 试图根据给定的字符串查找class对象,而这个字符串表示的类并不存在
遇到异常不进行处理,而是抛给调用者(throw,throws)
抛出异常有三种形式,throw和throws,还有一种是系统自动抛出异常
throw和throws的区别
- 位置不同,throws用在函数上,后面跟的是异常类,可以跟多个;而throw用在函数内,后面的跟的是异常对象。
- 功能不同
- throws用来声明异常,让调用者只知道该功能可能出现问题,可以给出预先的处理方式。throw抛出具体的问题对象,执行到throw,功能已经结束,转到调用者,并将具体的问题对象抛给调用者。也就是说throw语句独立存在时,下面不要定义语句,执行不到。
- throws表示出现异常的可能性,并不一定发生这些异常。throw则是抛出了异常,执行throw则一定抛出了某种异常对象。
- 两者都是消极处理方式,只是抛出或可能抛出异常,不作处理,有函数上层调用者处理。
Java异常分类及处理
原文:https://www.cnblogs.com/codingLiu/p/12748248.html