内容来自 《Java 程序员面试笔试通关宝典》
在Java中一个异常的产生,主要有如下三种原因:
(1)Java内部错误发生异常,Java虚拟机产生的异常。
(2)编写的程序代码中的错误所产生的异常,例如空指针异常、数组越界异常等。这种异常称为未检查的异常,一般需要在某些类中集中处理这些异常。
(3)通过throw语句手动生成的异常,这种异常称为检查的异常,一般用来告知该方法的调用者一些必要的信息。
Java通过面向对象的方法来处理异常。在一个方法的运行过程中,如果发生了异常,则这个方法会产生代表该异常的一个对象,并把它交给运行时系统,运行时系统寻找相应的代码来处理这一异常。
我们把生成异常对象并把它提交给运行的系统的过程称为拋出(throw)异常。运行时系统在方法的调用栈中查找,直到找到能够处理该类型异常的对象,这一个过程称为捕获(catch)异常。
在Java中所有异常类型都是内置类java.lang.Throwable类的子类,即Throwable位于异常类层次结构的顶层。Throwable类下面有两个异常分支Exception和Error,如图6-1所示。
图6-1 Java异常类
Java中常见的异常类型如表6-1所示。
表6-1 Java中常见的异常类型