【Java】自定义异常类【主线学习笔记】


前言

Java是一门功能强大且广泛应用的编程语言,具有跨平台性和高效的执行速度,广受开发者喜爱。在接下来的学习过程中,我将记录学习过程中的基础语法、框架和实践技巧等,分享学习心得,对自己学习过程进行整理和总结,也希望能为其他学习Java的朋友提供一些帮助和参考。


自定义异常

在Java中,自定义异常需要创建一个类,该类通常继承自Exception类或RuntimeException类。以下是创建自定义异常的基本步骤:

  1. 定义异常类
  • 创建一个类,继承自Exception(用于检查异常)或RuntimeException(用于非检查异常,也就是运行时异常)。
  • 提供构造函数,可以根据需要重载构造函数。
  1. 抛出异常:使用throw关键字来抛出自定义异常。

  2. 捕获异常:使用try-catch块捕获自定义异常。

如何自定义异常类?

  • 继承于现有的异常体系。通常继承于RuntimeException \ Exception
  • 通常提供几个重载的构造器
  • 提供一个全局常量,声明为:static final long serialVersionUID;

如何使用自定义异常类?

  • 在具体的代码中,满足指定条件的情况下,需要手动的使用"throw+自定义异常类的对象"方式,将异常对象抛出。
  • 如果自定义异常类是非运行时异常,则必须考虑如何处理此异常类的对象。(具体的:①try-catch-finally ②throws)

示例

  1. 定义自定义异常类
// 自定义异常类,继承 RuntimeException(非检查异常)
public class CustomException extends RuntimeException {
    // 定义唯一ID,确保异常类的序列化版本一致性
    private static final long serialVersionUID = 1L;

    // 无参构造函数
    public CustomException() {
        super();
    }

    // 接受异常信息的构造函数
    public CustomException(String message) {
        super(message);
    }

    // 接受异常信息和异常原因的构造函数
    public CustomException(String message, Throwable cause) {
        super(message, cause);
    }

    // 接受异常原因的构造函数
    public CustomException(Throwable cause) {
        super(cause);
    }
}
  1. 使用自定义异常

在业务逻辑中,可以根据需要抛出自定义异常。假设我们有一个简单的银行账户操作,当余额不足时抛出自定义异常:

public class BankAccount {
    private double balance;

    public BankAccount(double balance) {
        this.balance = balance;
    }

    // 模拟取款操作,当余额不足时抛出自定义异常
    public void withdraw(double amount) throws CustomException {
        if (amount > balance) {
            throw new CustomException("余额不足,无法取款!");
        }
        balance -= amount;
        System.out.println("取款成功,当前余额:" + balance);
    }
}
  1. 捕获自定义异常

使用try-catch块来捕获和处理自定义异常。

public class Main {
    public static void main(String[] args) {
        BankAccount account = new BankAccount(100);

        try {
            account.withdraw(150); // 试图取款超过余额,抛出自定义异常
        } catch (CustomException e) {
            System.out.println("捕获到异常: " + e.getMessage());
        }
    }
}

输出结果:

捕获到异常: 余额不足,无法取款!

为什么需要自定义异常?

为了见名知意,通过异常类的名称,就能判断出具体出现的问题,提高了可读性、可维护性,帮助开发者快速定位和处理问题。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

虫本初阳

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值