java.lang.Throwable是java.lang.Error和java.lang.Exception的超类。
1、Error
表示系统级别的一些错误,通常来说是JVM发生了错误,也可能是由应用程序本身的一些问题所引起的。
典型:OutOfMemoryError、 StackOverflowError
2、Exception
表示应用程序本身的一些异常,是由于程序编写过程中,由于逻辑不严密等等程序员自身问题所造成的异常。
Exception又可以分成两条线,分别是编译期异常和运行期异常。
1)编译期异常(java.lang.Exception)
通常都是一些可以预见的异常,在程序编译期间,会强制程序员对编译期异常进行处理,通过throws语句或者try{}cathch{} 语句块来处理检测异常。
典型:IOException、SQLException、EOFException、ClassNotFoundException、NoSuchFieldException、NoSuchMethodException。
2)运行时异常(java.lang.RuntimeException)
这种异常在编译期无法检测,所以在编译期间不会强制对这种异常进行处理,而这种异常会在程序运行期间抛出,一旦jvm抛出了这种异常,会引起程序的异常中断。
典型:
1、NullPointerException 空指针异常
2、IndexOutOfBoundsException 下标越界异常
3、IllegalArgumentException 传递非法参数异常
4、ArithmeticException 算术运算异常
5、ClassCastException 类型强制转换异常