异常分类以及处理机制浅谈

Java标准库内建了一些通用的异常,这些类以Throwable为顶层父类。
Throwable常用的子类Error和Exception类。
Error是错误:Error类以及它的子类的实例,代表了JVM本身的错误。错误不能被程序员通过代码处理,Error很少会出现。因此程序员应该更多的关注Exception类及其各种子异常类。

异常:Exception以及它的所有子类,代表运行时程序发送的各种不期望发生的事件。可以被Java异常处理机制使用,是异常处理的核心。

异常分类以及处理机制浅谈
如果按照Javac对异常处理的要求,将异常类分为两类:
**1.非检查异常(unchecked exception):**Error和RuntimeException以及它们的子类。javac在编译时,不会提示和发现这样的异常,不要求在程序处理这些异常。对于这些异常我们应该通过修正代码,而不是去通过异常处理器处理。这样的异常发生的原因多半是代码问题。如
除零错误(ArithmeticException)、
错误的强制类型转换错误(ClassCastException)、
数组索引越界错误(ArrayIndexOutOfBoundsException)、
空指针异常(NullPointerException)等等。
**2.检查异常(checked exception):**javac强制要求程序员为这样的异常做预备处理工作(使用try…catch…finally或者throws捕捉或抛出),否则编译不会通过。这样的异常一般是由程序的运行环境导致的,因为用户在使用程序员编译的软件或者程序时,程序所处的运行环境无法预知且不可控,所以程序员就应该为这样的异常时刻准备着。如
SQLException、ClassNotFoundException等。

也可以参照“编译异常”与“运行时异常”的区别来进行对照掌握,“编译异常”是指在编译过程中会报错,如果不解决会一直“报红”;而“运行时异常”是指在编译过程中未报错,但是在运行时,后台会提示异常存在,则需要根据实际的异常类结合断点或者经验排除。

(内容大多来自网络,若有幸被大佬看到,联系侵删)