JAVA—异常

认识异常,学会从报错信息中发现问题,解决问题。并学会构建自定义异常,提醒编程时注意

目录

1.认识异常

2.自定义异常

1.自定义运行时异常

2.自定义编译时异常

3.异常的处理


1.认识异常

异常就是代表程序出现的问题,用来查询BUG关键信息

将错误信息封装为一个错误对象,然后提交到JVM虚拟机中返回报错信息,显示错误类型,错误问题,错误位置。

异常类Throwaable子类包括:

  • Error(系统级错误,严重问题)(开发时不理会)
  • Exception(异常 我们程序会出现的问题)再下设

运行时异常:RuntimeException及其子类(运行时出现的问题)

编译时异常:编译阶段会有错误提醒其他异常(日期解析异常)


2.自定义异常

掌握学习自定义异常和体会作用

1.自定义运行时异常

使用异常对象封装问题并使用throw抛出到上一层经过try catch语句显示

java 复制代码
package Exception;

public class Ageillega extends RuntimeException {
    public Ageillega() {
    }

    public Ageillega(String message) {
        super(message);
    }
}
java 复制代码
package Exception;

public class Text1 {
    public static void main(String[] args) {
        try {
            saveAge(160);
            System.out.println("底层运行成功");
        } catch (Exception e) {
           e.printStackTrace();
            System.out.println("底层出现问题");
        }
    }

    public static void saveAge(int age){
        if(age > 0 && age <150){
            System.out.println("年龄被成功保存" + age);
        }
        else{
            //异常对象封装问题
            /*
            * 1.定义一个异常类继承RuntimeException
            * 2.重写构造器
            * 3.通过throw new 异常类 来创建异常类并抛出,编译阶段不报错
            * */
            throw new Ageillega("/age is illegal, your age is "+age);
            //throw抛出去异常对象
        }
    }
}

2.自定义编译时异常

还是封装异常对象类,提醒更强烈,引起注意

  • throw 是抛出异常对象
  • throws 是用在方法上,抛出方法内部的异常
java 复制代码
package Exception;

public class AgeillegaException extends Exception{

    public AgeillegaException() {
    }

    public AgeillegaException(String message) {
        super(message);
    }
}
java 复制代码
package Exception;

public class Text1 {
    public static void main(String[] args) {
        try {
            saveAge(160);
            System.out.println("底层运行成功");
        } catch (Exception e) {
           e.printStackTrace();
            System.out.println("底层出现问题");
        }
    }

    public static void saveAge2(int age) throws AgeillegaException {
        if (age > 0 && age < 150) {
            System.out.println("年龄被成功保存" + age);
        } else {

            throw new AgeillegaException("/age is illegal, your age is " + age);
            //throw抛出去异常对象
        }
    }
    public static void saveAge(int age){
        if(age > 0 && age <150){
            System.out.println("年龄被成功保存" + age);
        }
        else{

            throw new Ageillega("/age is illegal, your age is "+age);
            //throw抛出去异常对象
        }
    }
}

3.异常的处理

常见的处理方式:

  1. 捕获异常,记录异常并响应合适的信息给用户
  2. 捕获异常,尝试重修修复
    解决方法: 1. 使用try-catch 语句捕获,检测语句错误,返回报错信息

2.使用 throws 抛出错误提醒 返回报错信息

学习时间 2024.8.9

相关推荐
卖报的大地主10 分钟前
Learn Claude Code Agent 开发 | 8、后台异步执行:慢操作不阻塞主工作流
人工智能·笔记
qq_3331209712 分钟前
头歌答案--爬虫实战
java·前端·爬虫
TT哇13 分钟前
【项目】从“本地能跑”到“生产级部署”:Java + Docker 自动化部署深度复盘
java·docker·自动化
摇滚侠15 分钟前
JAVA 项目教程《苍穹外卖-11》,微信小程序项目,前后端分离,从开发到部署
java·开发语言·微信小程序
muls116 分钟前
java面试宝典
java·linux·服务器·网络·算法·操作系统
执笔论英雄16 分钟前
【vllm】vllm根据并发学习调度
java·学习·vllm
瑶总迷弟17 分钟前
Python入门第6章:字典(键值对数据结构)
java·数据结构·python
o丁二黄o30 分钟前
【MyBatisPlus】MyBatisPlus介绍与使用
java
_MyFavorite_33 分钟前
JAVA重点基础、进阶知识及易错点总结(14)字节流 & 字符流
java·开发语言·python
好家伙VCC1 小时前
**CQRS模式实战:用Go语言构建高并发读写分离架构**在现代分布式系统中,随着业务复杂度的提升和用户量的增长,传统的单数据库模型逐
java·数据库·python·架构·golang