1、什么是异常:
程序开发和运行过程中会出现编译错误和运行错误。编译错误容易被发现并排除,而运行错误(逻辑错误和异常)很难预料。因此为了程序的稳定性和可靠性,就需要对程序异常处理和保护。
异常( Exception ):
正常程序流程所不能处理或者没有处理的异常情况或异常事件。
2、异常的分类:
1):根据异常在编译时是否被检测来分,异常可以分为两类:
受检异常(CheckedException)与
非受检异常(UncheckedException)。
2):非受检异常不能在编译时检测到。
非受检异常包括运行时异常(RuntimeException)和
错误(Error)。
错误指的是致命性错误,常常无法处理。
3):根据异常的严重性,可以分为
可以处理的异常和
错误异常。
异常以类的形式封装。程序可以处理的异常对应的类是
java.lang.Exception及其子类。
运行时异常对应的类是
java.lang.RuntimeException。
错误异常对应的类是
java.lang.Error。
3、异常相关类的继承关系:
java.lang.Object
|
+——java.lang.Throwable
|
+——java.lang.Error
|
+——java.lang.Exception
|
+——java.io.IOException
|
+——java.lang.RuntimeException
|
+——java.lang.ArithmeticException
|
+——java.lang.ArrayIndexOutOfBoundsException
|
+——java.lang.IllegalArgumentException
|
+——java.lang.NumberFormatException
4、异常的产生:
- 可以由Java虚拟机在执行程序时自动发现并产生异常。
- 也可以在程序中显式地生成异常,这种方法称为抛出异常(ThrowExceptions)。
5、Exception异常 和 RuntimeException异常两者的区别是:
-
Exception :受检查的异常(编译错误),这种异常是强制我们catch或throw的异常。你遇到这种异常必须进行catch或throw,如果不处理,编译器会报错。比如:IOException。
-
RuntimeException:运行时异常(运行错误),这种异常我们不需要处理,完全由虚拟机接管。比如我们常见的NullPointerException,我们在写程序时不会进行catch或throw。