1、“异常”的理解
异常和语法错误是不一样的,语法错误程序会马上又小红点,但是异常是可能会发生的不一定发生的“不好的事情”。
2、Java的异常机制
Java异常使用终止模型,即假设“不好的事情”非常非常“关键,一旦发生“不好的事情”,就不可以在回到异常抛出点继续执行。
Java异常:就是把“不好的事情”相关的信息进行报告。
java异常处理程序将程序从不好的状态中恢复,前提是这个“不好的状态可以恢复”。
3、异常的分类
从继承关系上分:
Throwable类有两子类:Error类 ,以及Exception类
Exception类的子类分为:RuntimeException类,和非RuntimeException类
Error类:用于JVM报告系统错误,和程序代码无关。例如,OutOfMemoryError(内存溢出)。此类一般不需要编码人员关心。
Exception类: ①RuntimeException类:很难预料、一个地方发生RuntimeException,往往会在另外一个地方发生错误。 RuntimeException所代表的就是编程错误,逻辑错误。由于编程错误,所以不应该对其捕获。
例如,NullPointerException(空指针),ArrayIndexOutOfBoundsException(数组下标越界)
②非RuntimeException类:需要捕获进行异常处理从不好的状态中恢复。例如,IOException,FileNotFoundException。
从编译器是否强制检查分:
被检查异常:包括所有非RuntimeException类,这些异常受编译器强制检查。即一旦抛出,要么try-catch捕获处理,要么throws进行声明
不被检查异常:包括RuntimeException类和Error类,其中Error类无需关心,RuntimeException类捕不捕获、声不声明编译器都不关心,也不应该对其捕获,以使得RuntimeException被吞,而发生难以察觉的错误,它是必须被改正的编程错误。
原文:https://www.cnblogs.com/mgblogs/p/11409102.html