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 分钟前
【Androidstudio】学习/采坑笔记-冷重启和热重启(reboot)
笔记·学习
AI云原生40 分钟前
在 openEuler 上使用 x86_64 环境编译 ARM64 应用的完整实践
java·运维·开发语言·jvm·开源·开源软件·开源协议
科普瑞传感仪器40 分钟前
航空航天制造升级:机器人高精度力控打磨如何赋能复合材料加工?
java·前端·人工智能·机器人·无人机·制造
q_191328469541 分钟前
基于SpringBoot2+Vue2的宠物上门服务在线平台
java·vue.js·spring boot·mysql·宠物·计算机毕业设计·源码分享
CoderYanger44 分钟前
动态规划算法-两个数组的dp(含字符串数组):42.不相交的线
java·算法·leetcode·动态规划·1024程序员节
小蝙蝠侠1 小时前
async-profiler 火焰图宽度是否可信?哪些情况下会误导?(深度解析)
java·性能优化
IT_Octopus1 小时前
java多线程环境下 安全地初始化缓存(避免缓存击穿),同时兼顾性能 的双重检查锁方案
java·spring·缓存
Li_7695321 小时前
Spring Cloud —— SkyWalking(四)
java·spring cloud·skywalking
while(1){yan}1 小时前
多线程CAS八股文
java·开发语言·面试
zfj3211 小时前
Docker和容器OCI规范的关系
java·docker·eureka