第十二章 迷迷糊糊的异常

一、异常基本概念简介

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被吞,而发生难以察觉的错误,它是必须被改正的编程错误。

猜你喜欢

转载自www.cnblogs.com/mgblogs/p/11409102.html