Throwable:
有两个重要的子类:Exception(异常)和 Error(错误),
二者都是 Java 异常处理的重要子类,各自都包含大量子类。
Error:
系统或虚拟机的异常,无法捕获。如:OutOfMemoryError
Exception:
程序本身可以处理的异常。
RuntimeException:
JVM 常用操作引发的异常,如:NullPointerException
Checked:
在编译期间就可以发现的异常,必须在运行之前就进行处理的异常。
除了RuntimeException及其子类以外,
其他的Exception类及其子类都属于可查异常。
这种异常的特点是Java编译器会检查它,也就是说,
当程序中可能出现这类异常,要么用try-catch语句捕获它,
要么用throws子句声明抛出它,否则编译不会通过。
Unchecked:
包括运行时异常(RuntimeException与其子类)和错误(Error)。
运行时异常:
运行时异常的特点是Java编译器不会检查它,
也就是说,当程序中可能出现这类异常,
即使没有用try-catch语句捕获它,
也没有用throws子句声明抛出它,也会编译通过。
编译异常:
是RuntimeException以外的异常,
类型上都属于Exception类及其子类。
从程序语法角度讲是必须进行处理的异常,
如果不处理,程序就不能编译通过。
如IOException、SQLException等以及用户自定义的Exception异常,
一般情况下不自定义检查异常。
类别 常用异常类
Error
AssertionError、OutOfMemoryError、StackOverflowError
UncheckedException
AlreadyBoundException、ClassCastException、ConcurrentModificationException、IllegalArgumentException、IllegalStateException、IndexOutOfBoundsException、JSONException、NullPointerException、SecurityException、UnsupportedOperationException
CheckedException
ClassNotFoundException、CloneNotSupportedException、FileAlreadyExistsException、FileNotFoundException、InterruptedException、IOException、SQLException、TimeoutException、UnknownHostException