3:Throwable-Java API 实战

举报
Yeats_Liao 发表于 2022/10/24 22:51:52 2022/10/24
【摘要】 1. 异常的介绍Throwable有两个子类1.错误 Error不常见基本上不能解决尽量避免2.异常 Exception常见可以定位,通过修改代码解决不是编译失败问题,代码语法没有问题 2. 异常举例以及解决常见错误bug方案定位错误:编写好程序后,运行程序,在输入运行结果栏中会存在异常提示,红色中蓝色链接,就能找到自己的代码错误解决错误:先阅读异常提示,如果了解就直接修改,如果不了解那就...

1. 异常的介绍

Throwable有两个子类

1.错误 Error

  • 不常见
  • 基本上不能解决
  • 尽量避免

2.异常 Exception

  • 常见
  • 可以定位,通过修改代码解决
  • 不是编译失败问题,代码语法没有问题

2. 异常举例以及解决常见错误bug方案

  • 定位错误:编写好程序后,运行程序,在输入运行结果栏中会存在异常提示,红色中蓝色链接,就能找到自己的代码错误
  • 解决错误:先阅读异常提示,如果了解就直接修改,如果不了解那就搜索异常提示,了解问题所在,解决问题

最经典异常展示
在这里插入图片描述

3. RuntimeException

异常类有两个主要的子类:IOException 类和 RuntimeException

1.运行时异常

  • 运行时异常可修改也可不修改,不会对项目运行产生影响
  • 运行时异常像游戏漏洞,它不影响我们玩游戏,但是我们有一些漏洞可以捡,比如更新以后某个英雄的技能,在某个时间可以无限的放或者平A就能秒死人

2.非运行时异常

  • 非运行时异常必须修改,因为这样会使得项目直接无法运行(现在的编译器比较智能,一定会让你try catch
  • 但是非运行时异常导致你进不去游戏

编译器中,运行时异常不会要求你捕获,但是非运行时异常会强制要求你捕获,所以我们在编写自定义异常的时候不会定成运行时异常

4. trycatch作用,闲扯淡诱骗毕业设计

try catch的作用

  • 定位一个代码块的异常,运行完成这个代码块后,抛出这个代码块的异常
  • try catch可以搭配finally使用,意思是在捕获完成以后使用,也可以不搭配
  • 但使用finally就必须搭配try catch
  • try catch的捕获内容可以自定义,可以让它抛出异常,也可以不让它抛出异常,所以根据这个小漏洞,你可以去骗毕业设计,但工作中绝对不能用!

抛出异常,正常捕获,运行可以通过,但会显示异常的结果和定位异常
在这里插入图片描述

不抛出异常,欺骗老师,运行还是通过,但不会定位异常

在这里插入图片描述

在这里插入图片描述

5. NullPointerException空指针异常

空指针异常的情况

  • Calling the instance method of a null object. 调用空对象的实例方法
  • Accessing or modifying the field of a null object.访问或修改空对象的字段
  • Taking the length of null as if it were an array.将null的长度当作一个数组
  • Accessing or modifying the slots of null as if it were an array.访问或修改null的插槽,就好像它是一个数组一样
  • Throwing null as if it were a Throwable value.将null视为Throwable值

在有关对象判断类中会有抛出空指针异常的情况

在这里插入图片描述

6. throws

throw的作用就是抛出异常,有什么用呢?

  • 通过捕获异常的功能,我们可以写判断或抛出异常的方法
  • 在不通过的情况下提醒程序员,这样程序员可以快速的更改代码,以防止程序在后面出现更严重的问题

在这里插入图片描述

7. throws和trycatch区别,用途区别

throwtry catch的区别

  • throw是用来抛出异常的,而try catch是尝试运行并捕获
  • 两者结合可以达到十分好的效果

创建MyException类,Alt+Insert调出Generate,选择Constructor

在这里插入图片描述
全选Exception
在这里插入图片描述
由此抛出编译异常
在这里插入图片描述

StringTest类中测试抛出异常

在这里插入图片描述
也可以通过调用函数的形式抛出异常

在这里插入图片描述
如果未抛出异常,则会显示编译异常,未报告的异常错误,必须对其进行捕获或声明以便抛出

在这里插入图片描述
而如果把MyException改成RuntimeException,就不会抛出编译异常,而是出现运行异常
在这里插入图片描述

8. 手把手教你编写装X自定义异常

创建ErrorCode接口
在这里插入图片描述
编写自定义异常代码

public interface ErrorCode {
    /**
     * 获取错误码
     * @return
     */
    String getcode();


    /**
     * 获取错误信息
     * @return
     */
    String getMsg();
}

创建MyCodeEnum枚举类
在这里插入图片描述
编写代码实现接口中的所有方法

public enum MyCodeEnum implements ErrorCode{
    NOT_FOUND_PAGE("404","找不到网站资源"),
    NOT_FOUND_FILE("888","找不到文件"),
    NOT_O_TEN("bad", "只能求10以内的加法")
    ;

    MyCodeEnum(String code, String msg) {
        this.code = code;
        this.msg = msg;
    }

    private final String code;
    private final String msg;

    @Override
    public String getcode() {
        return code;
    }

    @Override
    public String getMsg() {
        return msg;
    }
}

创建MyException类继承RuntimeException

public class MyException extends RuntimeException{

    public MyException(ErrorCode errorCode) {
        super(errorCode.getMsg());
    }
}

String Test类中抛出异常,并可枚举选择异常形式
在这里插入图片描述

在这里插入图片描述

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。