在Java中异常被当做对象来处理,根类是java.lang.Throwable类,在Java中定义了很多异常类(如OutOfMemoryError、NullPointerException、IndexOutOfBoundsException等),这些异常类分为两大类:Error和Exception。
Error:指的是JVM错误,即,此程序还没有执行,如果没有执行用户无法处理这个异常。
Exception:指的是程序运行中产生的异常,用户可以处理,也就是所谓的异常处理指的是所有Exception以及它的所有子类。
*java中的异常处理流程:
(1)当程序在运行的过程之中出现异常之后,JVM会自动根据异常的类型实例化一个与之类型匹配的异常对象
(此时用户不用去关心new,有系统自动负责处理)
(2)产生异常对象之后会判断当前的语句是否存在有异常处理,如果现在没有异常处理,
那就交给JVM进行默认的异常处理,处理的方式:输出异常信息,而后结束程序的调用,
(3)如果此时存在异常的捕获操作,那么会由try语句来捕获产生的异常实例化对象,而后与try语句后的每一个catch语句进行比较,如果有符合的异常处理,即使用当前catch语句进行异常处理,如果不匹配,则匹配剩下的catch语句。
(4)不管最后异常处理是否能够匹配,那么都要向后执行,如果此时程序中存在finally语句,那么就先执行finally中的代码,但是执行完毕后需要根据之前的catch匹配结果来决定如何执行,如果之前已经成功的捕获类异常,那么就继续执行finally之后的代码,如果之前没有成功的捕获异常,那么就将此异常交给JVM进行默认处理(输出异常信息,
结束程序执行)
处理提示:
*:在整个捕获异常的时候,要将捕获范围大的异常放在捕获范围小的异常之后,否则出现编译错误。
*:虽然直接 捕获Exception比较方便,但是在处理大型项目时建议写出具体的异常。
throw与throws的区别
Throws:在方法的声明上使用,表示此方法在调用时必须处理异常。
Throw:指的是在方法之中人为抛出一个异常类对象(这个异常对象可能是自己实例化或者是抛出已存在的)