异常分类




java批量接口错误码结果结构 java错误码定义规则_java批量接口错误码结果结构



Error与Exception都继承自Throwable类

Error是程序无法处理的错误,表示运行应用程序中较严重问题。大多数错误与代码编写者执行的操作无关,而表示代码运行时 JVM(Java 虚拟机)出现的问题。例如,Java虚拟机运行错误(Virtual MachineError),当 JVM 不再有继续执行操作所需的内存资源时,将出现 OutOfMemoryError。这些异常发生时,Java虚拟机(JVM)一般会选择线程终止。

     Error表明系统JVM已经处于不可恢复的崩溃状态中。我们不需要管它。

Exception是程序本身能够处理的异常,如:空指针异常(NullPointerException)、数组下标越界异常(ArrayIndexOutOfBoundsException)、类型转换异常(ClassCastException)、算术异常(ArithmeticException)等。

     Exception类是所有异常类的父类,其子类对应了各种各样可能出现的异常事件。通常Java的异常可分为:

     1. RuntimeException 运行时异常

     2. CheckedException 已检查异常

派生于RuntimeException的异常,如被 0 除、数组下标越界、空指针等,其产生比较频繁,处理麻烦,如果显式的声明或捕获将会对程序可读性和运行效率影响很大。因此由系统自动检测并将它们交给缺省的异常处理程序(用户可不必对其处理)。

所有不是RuntimeException的异常,统称为Checked Exception,又被称为“已检查异常”,如IOException、SQLException等以及用户自定义的Exception异常。这类异常在编译时就必须做出处理,否则无法通过编译。

自定义异常

在程序中,可能会遇到任何标准异常类都没有充分的描述清楚的问题,这种情况下可以创建自己的异常类

从Exception类或者其他的子类派生一个子类即可。

习惯上,定义的类应该包含2个构造器:一个是默认构造器,另一个是带有详细信息的构造器。

异常处理


Java的异常处理通常是通过5个关键字来实现:try、catch、finally、throws、throw


java批量接口错误码结果结构 java错误码定义规则_异常机制_02

try-catch

情况1:try块中没有出现异常

      不执行catch块代码,执行catch后边的代码

情况2:try块中代码出现异常,catch中异常类型匹配(相同或者父类)

       执行catch块代码,执行catch后面代码

情况3:try块中代码出现异常,catch中异常类型不匹配

       不执行catch块代码,不执行catch块后边的代码,程序会中断执行

注意:

         出现异常后,Java会生成相应的异常对象,Java系统匹配的catch块,找到后将异常对象付给catch块异常参数

         出现异常后,try块中尚未执行的语句不会执行

         出现异常后并处理,catch后面的语句还会执行

Catch块中如何处理异常:

                          1.输出用户自定义异常信息

                          2.调用异常对象的方法输出异常信息

                                      printStackTrace()

                         3.继续向上抛

                                     throw e

try-catch-finally

在try-catch块后加finally块,可以确保无论是否发生异常,finally块中的代码总能被执行

               无异常:try-finally

               有异常:try-catch-finally

通常在finally中关闭程序块已打开的资源,比如:文件流、释放数据库连接等

finally块的具体执行过程

           1、执行try或catch中代码

           2、遇到return/throw,先执行finally中语句块

           3、执行return/throw

多重catch

一段代码可能会引发多种类型的异常

当异常发生时,会按顺序来查看每个catch语句,并执行第一个与异常类型匹配的catch语句,执行其中一条catch语句后,其后catch语句后,其后catch语句将被忽略

在安排catch语句的顺序时,首先应该捕获最特殊的异常,然后在逐一细化,即先子类后父类。

声明异常throws

当Checked Exception 产生时,不一定立刻处理它,可以再把异常throws出去

如果一个方法抛出多个已检查异常,就必须在方法的首部列出所有的异常,之间以逗号隔开

                     子类声明的异常范围不能超过父类声明范围

                     父类没有声明异常,子类也不能

                     不可抛出原有方法抛出异常类的父类或上层类

手动抛出异常throw

Java异常类对象除在程序执行过程中出现异常时由系统自动生成并抛出,也可以根据需要手工创建并抛出

在捕获一个异常前,必须有一段代码先生成异常对象并把它抛出。这个过程我们可以手工做,

也可以由JRE来实现,但是他们调用的都是throw句子。

注意抛出运行时异常和Checked异常的区别

            1、抛出Checked异常,该throw语句要么处于try块中,要么方法前面中有throws抛出

            2、抛出运行时异常,没有以上要求

总结

五个关键字(try、catch、finally、throws、throw)

先逮小的,再逮大的

自定义异常