• 【Java】异常


    1. Java的异常概念

    1.1 异常体系结构

    从上图中可以看到:
    • 1. Throwable是异常体系的顶层类,其派生出两个重要的子类, Error Exception
    • 2. Error:指的是JVM无法解决的严重问题,比如:JVM的内部错误、资源耗尽等,典型的代表:StackOverflowError和OutOfMemoryError,一旦出现,无法回天!
    • 3. Exception:异常产生后程序员可以通过代码进行处理,使得程序可以继续运行。

    1.2 异常分类

    编译时异常

    • 在编译期间发生的异常,称为编译时异常,也叫作受检查异常
    • 在编写代码的时候就需要进行处理,要么try catch 或者throws

    2. 异常处理

    2.1 防御式编程

    • 事前防御 -- if else 
      • 缺陷:正常流程和错误处理流程代码混合在一起,代码整体显的十分复杂
    • 事后认错 -- throw try catch
      • 优势:正常流程和错误流程是分离开的 , 程序员更关注正常流程,代码更清晰,容易理解代码

    2.2 异常抛出 -- throw

    如果程序中出现错误,此时就需要将错误的信息告知给调用者,比如:参数检测。
    具体语法如下:
    throw new XXXException ( " 异常产生的原因 " );
    1. throw必须写在方法内部;
    2. 抛出的对象必须是Exception 或者 Exception 的子类对象
    3. 如果抛出的是 RunTimeException 或者 RunTimeException 的子类,则可以不用出,直接交个JVM来处理。
    4. 如果抛出的编译时异常,用户必须处理,否则无法通过编译
    5. 异常一旦抛出,其后的代码就不会执行

    2.3 异常的捕获 -- throws try-catch 

    2.3.1 异常声明 throws

    • 当前方法不处理异常,提醒方法的调用者处理异常
    语法格式:
    修饰符 返回值类型 方法名 ( 参数列表 ) throws 异常类型 1 ,异常类型 2 ...{
    }
    • 1. throws必须跟在方法的参数列表之后
    • 2. 声明的异常必须是 Exception 或者 Exception 的子类
    • 3. 方法内部如果抛出了多个异常,throws之后必须跟多个异常类型,之间用逗号隔开,如果抛出多个异常类型 具有父子关系,直接声明父类即可。
    • 4. 调用声明抛出异常的方法时,调用者必须对该异常进行处理,或者继续使用throws抛出

    异常的处理方式

    • System.out.println(e.getMessage()); // 只打印异常信息
    • System.out.println(e); // 打印异常类型:异常信息
    • e.printStackTrace(); // 打印信息最全面

    2.3.2 finally 关键字

    异常会引发程序的跳转,可能 导致有些语句执行不到,finally就是用来解决资源回收问题的

    注意: finally 中的代码一定会执行的,一般在 finally 中进行一些资源清理的扫尾工作。

    3. 自定义异常类

    需要的步骤:
    • 1. 自定义异常类,然后继承自Exception 或者 RunTimeException
    • 2. 实现一个带有String类型参数的构造方法,参数含义:出现异常的原因

    注意:

    • 自定义异常通常会继承自 Exception 或者 RuntimeException
    • 继承自 Exception 的异常默认是受查异常
    • 继承自 RuntimeException 的异常默认是非受查异常.
  • 相关阅读:
    [Linux1]入门基础知识
    荧光量子效率积分球检测薄膜需要注意什么
    超简单!!!搭建阿克曼ROS小车
    学习爬虫,这个是你必须要知道的,get和post请求的区别
    本科生大厂算法岗实习经验复盘:从投递到面试的底层思维!
    【待读重要】
    Docker 相关配置文件路径
    一文看懂页面置换算法
    黑客动态播报 | 一封假offer,盗取6.25亿美元
    Flask笔记二之blueprint和session介绍
  • 原文地址:https://blog.csdn.net/zxj20041003/article/details/133392646