• 了解 异常


    了解异常

    异 常

    在这里插入图片描述
    在这里插入图片描述

    • 当发现出现如上图所示的输出信息,称为报错,如何解决,是一个长久的积累过程,

    • 关键要去记忆一些以Exception结尾的单词含义,Exception就叫做异常

    • 异常是可以通过if。。Else。。判定来堵漏洞,但是不是所有的漏洞都能堵上,而且会造成代码的可读性,维护性变差

    Java中如何进行异常处理

    • Java的异常处理是通过5给关键字实现的

      关键字处理方式说明
      try捕获异常执行可能产生异常的代码
      catch捕获异常捕获异常
      finally捕获异常无论是否发生异常,代码总能执行
      throw声明异常声明方法可能要抛出的各种异常
      throws抛出异常手动抛出异常
    • 总结起来就是五个关键字:try、catch、finally、throw、throws

    try-catch块

    • 使用try-catch块捕获异常,分为三种情况

      • 第一种情况:正常
        在这里插入图片描述

        try块代码没有发生异常,catch块内的代码不会运行,后续的代码可以正常运行

      • 第二种情况:出现正常
        在这里插入图片描述

        try块中代码出现异常,则try块后续的代码中止运行,这个异常在catch块中能找到匹配的处理,进入catch块运行,再运行后续的代码块

      • 第三种情况:异常类型不匹配

      • 在这里插入图片描述

        try块中代码出现异常,则try块后续的代码中止运行,这个异常在catch块中不能找到匹配的处理,中断代码运行,后面代码均不执行

    在catch块中处理异常

    加入用户自定义处理信息

    System.err.println("出现错误:采摘量和果商数应为整数,果商数应大于零!");
    
    • 1

    调用方法输出异常信息

    e.printStackTrace();
    
    • 1

    异常对象常用的方法

    方法名说明
    void printStackTrace()输出异常的堆栈信息
    String getMessage()返回异常信息描述字符串,是printStackTrace()输出信息的部分

    这两个方法,第一个方法printStackTrace() 一定要写,它可以提供错误的类型和错误的信息提示,第二个方法getMessage()只能看到错误的信息提示,但是大多数错误都没有信息提示,所以第二个方法能力有限

    重点

    • 在try-catch块后加入finally块

      • 是否发生异常都执行:

      • 在这里插入图片描述

        try块正常运行,运行完进入finally块执行

        try块运行出现异常,先进入catch块,再进入finally

      • 存在return的try-catch-finally块:

      在这里插入图片描述

    catch块中加return,finally块一样会运行,finally在return之前执行
    在这里插入图片描述

    💥特殊点注意!

    如果catch和finally中都存在return,由于finally块会在catch的return前运行,而finally中存在了return则直接返回了,catch中的return就不会运行了

    ···
    在这里插入图片描述

    代码运行正常,finally一定会执行,即使try块中有return,但是先执行finally,再执行return,由于finally存在return语句,则直接返回,结果为2

    ···
    在这里插入图片描述

    只有这一种写法不会运行finally块,真实场景下绝对不可能出现这行代码的

    异常的分类

    在这里插入图片描述

    ​ 所有异常和错误的父类:Throwable可抛出的

    ​ Throwable下面有2个子类,一个叫Error错误),一个叫Exception异常

    • 其中Error 属于非常难以解决的问题,通过编码逻辑基本得不到解决方案的

    • Exception属于代码出现了逻辑性,违反Java的编程规定所出现的一些简单问题,可以得到解决的

    ✨Exception下会分为两种异常类型:

    一种叫RuntimeException(运行时异常):只有程序运行了,才可能发生的异常

    另一种叫CheckedException(检查异常):强制要求程序进行异常处理,否则编译不给通过的

    小结

    提问:

    • 自定义异常需要继承哪个类
    • 如何使用Java编写自定义异常类

    代码阅读:

    public class Superclass{
        public void start() throws IOExeption{
            throw new IOExeption("Not acble to open file");
        }
    }
    public class SubClass extends Superclass{
        public void start() throws Exeption{
            throw new Exeption("Not acble to start");
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10

    💥注意:

    • 这段代码编译器对子类重写start()方法产生错误。
    • 因为每一个Java方法的重写是有规则的。
    • 一个重写方法抛出的异常不能比父类原方法继承关系高。

    如果父类抛出异常,子类重写方法不可以抛出比父类异常更高的异常
    在这里插入图片描述

    jar文件,俗称jar包

    InputMismatchException: 输入不匹配异常

    ArithmeticException: 数学运算异常

  • 相关阅读:
    [附源码]计算机毕业设计JAVAjsp银行OA系统
    Spring IOC容器的启动 AbstractApplicationContext详解
    前端综合练手小项目
    Vue3学习(十五)之 级联选择组件Cascader的使用
    HTML班级网页设计 基于HTML+CSS+JS制作我们的班级网页(web前端学生网页设计作品)
    pytorch: hook机制,取网络层的输入输出和梯度
    【设计模式】Head First 设计模式——构建器模式 C++实现
    方向介绍:基于深度学习的轨迹预测
    MySQL中的存储过程(详细篇)
    一文搞懂容器运行时 Containerd
  • 原文地址:https://blog.csdn.net/Fat_peach/article/details/127558631