Java异常处理回顾学习

xiaoxiao2021-02-28  12

一、异常概述

    异常就是程序在运行时出现了不正常的情况。

    Java通过java类的形式对出现的问题进行描述,并封装成对象。

    问题分为两种:

    1.严重的问题

        是程序无法处理的错误,表示运行应用程序中较严重问题。大多数错误与代码编写者执行的操作无关,而表示代码运行时 JVM(Java 虚拟机)出现的问题。

        java通过对Error类进行描述,对于Error一般不编写针对性的代码对其进行处理。

    2.非严重的问题

        是程序本身可以处理的异常

        java通过Exception类进行描述,对于Exception可以使用针对性的处理方式进行处理。

    java异常类层次结构图:

Error或者Exception都具有一些共性内容。都继承自Throwable这个异常的超类。

详情可查jdkAPI文档

二、异常处理机制

在 Java 应用程序中 ,异常处理机制为: 捕捉异常,抛出异常

1.单个异常捕捉

try{

    需要被检测的代码

}catch(异常类  变量){

    处理异常的代码:(处理方式)

}finally{

    最后一定会执行的代码

注:在以下4种特殊情况下,finally块不会被执行:1)在finally语句块中发生了异常。2)在前面的代码中用了System.exit()退出程序。3)程序所在的线程死亡。4)关闭CPU。

}

图示try、catch、finally语句块的执行:

2.单个异常抛出

在功能上通过throws的关键字声明了该函数A有可能会出现问题。

通过函数B调用了用throws声明了的函数A,则函数B必须

对异常进行捕捉或者抛出,否则编译不通过。

*有个特殊情况

Exception中有一个特殊的子类异常RuntimeExcetion(运行时异常)如果在函数内抛出异常,函数上可以不用声明,编译一样通过如果在函数上声明了该异常。调用该函数者可以不用进行处理,编译一样通过。之所以不用在函数声明,是因为不需要让调用函数者处理。当该异常发生,希望程序停止,因为在运行时,出现了无法继续运算的情况,希望停止程序后,对代码进行修正。

虚拟机认为不要处理,让程序停掉,改动程序之所以。

3.多个异常处理

    声明异常时,建议声明更为具体的异常,这样处理的可以更具体。   对方声明几个异常,就对应有几个catch块,不要定义多余的catch块,   如果多个catch块中的异常出现继承关系,父类异常catch块放在最下面   的异常出现继承关系。

三、自定义异常

     因为项目中会出现特有的问题,而这些问题并未被java所描述并封装对象,所以对于这些特有的问题可以按照java对问题封装的思想,进行自定义描述。

当函数内部出现throw抛出异常对象,那么就必须要给相应的处理动作。

要么在内部try..catch处理。要么在函数上声明让调用者处理。

三、异常的两种

1、编译时被检测的异常,表明是可以处理的异常。try..catch或者throws 2、编译时不被检测的异常(运行时异常,RuntimeException以及其子类异常)

四、异常的注意事项

1.子类在覆盖父类方法时,父类的方法如果抛出了异常,那么子类的方法只能抛出父类的异常或者该异常的子类。

2.如果父类抛出多个异常,那么子类只能抛出父类异常的子集。----子类覆盖父类只能抛出父类异常或者子类或者子集。如果父类的方法没有抛出异常,那么子类覆盖时绝对不能抛,只能try。

转载请注明原文地址: https://www.6miu.com/read-1650191.html

最新回复(0)