参考博客:http://blog.csdn.net/hguisu/article/details/6155636
Java把所有的非正常情况分为两类:Error和Exception;其中Error是程序自身无法处理的错误;Exception是程序自身可以处理的异常。
这两类非正常情况继承同一个父类:Throwable类;
Java的异常类之间的关系(图片来自网上):
Java通常将异常分为两类:可查异常(在编译阶段就能确定的异常,当出现这类异常的时候,必须进行处理使用try-catch/throws)、不可查异常(运行时异常/Error);
而Exception又可以分为两类:运行时异常和编译异常
运行时异常指的是:编译器不会对其产生错误信息;
编译异常:编译的时候就不能通过,必须进行处理(使用try-catch/throws)。
处理异常机制:
1.当一个方法发生异常的时候,该方法会创建一个异常对象交付给运行时系统,由其负责寻找处理异常的代码并且执行;(通常用throws关键字进行异常抛出)
2.捕捉异常:在方法抛出异常之后,运行时系统将转为寻找合适的异常处理器。潜在的异常处理器是异常发生时依次存留在调用栈中的方法的集合。当异常处理器所能处理的异常类型与方法抛出的异常类型相符时,即为合适 的异常处理器。运行时系统从发生异常的方法开始,依次回查调用栈中的方法,直至找到含有合适异常处理器的方法并执行。当运行时系统遍历调用栈而未找到合适 的异常处理器,则运行时系统终止。同时,意味着Java程序的终止。(通常使用try-catch/throws进行异常捕捉)。