我的java学习日记(九)java异常处理

本文通过一个简单的Java程序展示了如何自定义异常类处理取款余额不足的情况。在Ebank类中,当尝试取出的金额大于账户余额时,会抛出自定义异常withdrawmeiqian。在main方法中,使用try-catch捕获并处理此异常,输出缺少的金额。异常处理使得程序更加健壮,提高了代码的可读性和可维护性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

java异常处理

编程难免会出现错误和异常,例如进行除法运算时被除数为零,注册账号时用户名已经被使用等等情况,这时我们就可以用到异常处理了,这样就可以让程序不至于因为一个小小的错误而直接崩溃,而是将该异常抛出然后尝试解决或者输出该错误的参数以便于查找错因

示例:

在存钱取钱的时候,难免会遇到账户余额不足的时候,这时候就可以自定义一个异常类,然后在合适的时机抛出该异常。

class withdrawmeiqian extends Exception{
    private double amount;
    public withdrawmeiqian(double amount){
        this.amount = amount;
    }
    public double getAmount(){
        return amount;
    }
}

在以上代码中,我定义了一个异常类(extends Exception是因为所有的异常都是他的子类)withdrawmeiqian,这个类可以在构造时输入所缺少的钱,然后getAmount方法可以返回所缺少的钱。

虽然看上去有点脱裤子放屁的样子,但是毕竟是练习,可以加深我们对异常处理的李姐。

public class Ebank {
    private double balance;
    private int number;
    public Ebank(int number){
        this.number=number;
    }
    public void deposit(double amount){
        balance +=amount;
    }
    public void withdraw(double amount) throws withdrawmeiqian{
        if (amount<=balance){
            balance-=amount;
        }
        else{
            double needs=amount -balance;
            throw new withdrawmeiqian(needs);
        }
    }
    public double getBalance()
    {
        return balance;
    }
    //方法:返回卡号
    public int getNumber()
    {
        return number;
    }
}
public class Run_ {
    public static void main(String[] args) {
        Ebank nm=new Ebank(199);
        nm.deposit(100);
        try {
        nm.withdraw(120);}catch(withdrawmeiqian e){
            System.out.println("meiqianle!"+"还差"+e.getAmount()+"块钱");
            e.printStackTrace();
        }
    }
}

在main中,我首先实例化了一个Ebank对象并指定卡号为199,然后我存了100,想取出来120块钱(做梦ing),这时对象nm就会抛出一个异常,然后被catch住,catch住的对象可以执行该异常中定义的方法,例如这个异常对象e可以执行getAmount()方法。

总结

异常的使用可以让异常处理统一化,便于管理,提高代码的可读性和可维护性,如果一个类中可能会出现一种异常,但是你自己不想在这里直接处理这个异常,那么你就可以将这个异常 抛出,然后让调用这个类的人处理,如果调用这个类的程序员也不想管,那么他可以在定义类时后面加上throws (异常名称) ,表示这个类会抛出这个异常,并交个更上面的程序员处理。

在这个例子中,我考虑到了取钱的时候可能会出现想去的数目大于存款的情况,所以我定义了一个异常类,然后定义了这个异常会在哪种情况下抛出,当我调用这个可能抛出异常的代码或者对象时,我就使用trycatch语句环绕,尝试解决问题或者给出相关的解决方案。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值