1、Java异常类型:
首先上个异常类的结构图:
1.所有的异常都是从Throwable继承而来的,是所有异常的共同祖先。
2.Throwable有两个子类,Error和Exception。(异常是可以被处理的,而错误是没法处理的。 )
3、Exception分为两类:Checked Exception和Unchecked Exception
4、Checked Exception:可检查的异常,这是编码时非常常用的,所有checked exception都是需要在代码中处理的。它们的发生是可以预测的,正常的一种情况,可以合理的处理。比如IOException,或者一些自定义的异常。除了RuntimeException及其子类以外,都是checked exception。
5、Unchecked Exception:RuntimeException及其子类都是unchecked exception。比如NPE空指针异常,除数为0的算数异常ArithmeticException等等,这种异常是运行时发生,无法预先捕捉处理的。Error也是unchecked exception,也是无法预先处理的。
6、常见的RuntimeException: ClassCastException类型强制转换异常、NullPointerException空指针异常类、StringIndexOutOfBoundsException、NumberFormatException数字格式异常、ArrayIndexOutOfBoundsException数组下标越界异常、ClassNotFoundException找不到类异常、NoSuchMethodException 方法未找到异常
2、异常的捕获机制
代码中的异常处理其实是对可检查异常的处理。
1. 通过try...catch语句块来处理。
2. 另外,也可以在具体位置不处理,直接抛出,通过throws/throw到上层再进行处理。(throws出现在方法函数头;而throw出现在函数体。)
3. finally关键字