初学Java--自定义异常

文章讲述了在Java中如何自定义异常,通过继承Exception类创建BIMException,并在BIM指数计算中使用自定义异常处理不合理的输入。示例代码展示了如何在用户输入体重和身高计算BIM指数时,如果值不在正常范围内,抛出自定义的BIMException。
摘要由CSDN通过智能技术生成

之前提到Java中本身异常有编译时异常和运行时异常两种,是已经由Java官方定义好了的异常,而自定义异常,顾名思义,是我们自定义的,由我们定义的这个类为异常类。
打个比方,如Java中本已经定义好的编译时异常中的IOException,在程序进行输入(读取文件,网络连接等)或输出(写入文件,网络传输等)操作时,如果发生了错误,就会抛出IOException,而有些异常是我们基于人类主观上认为的不合理或不存在的一个异常现象,比如定义一个飞翔的方法让猫去实现,显然猫不会飞,再比如定义一个打分的方法,如果打分超过了满分也是不合理的,这些Java本身判断不了的异常现象,就需要我们人主观上去定义为异常。

那如何来自定义异常呢,自定义异常只需要把该类继承Exception类时,这就是一个异常类。如下是代码演示:

package MyException;

public class BIMException extends Exception {
    public BIMException() {
    }

    public BIMException(String message) {
        super(message);
    }
}

上面定义了一个BIMException的类,当我把它继承Exception类的时候,它就成了一个自定义异常类,然后我写了一个有参一个无参的构造方法,用于后面处理自定义异常时创建对象和打印异常信息。
这是一个BIM异常,创建思路是如果计算的的BIM指数不合理(比如小于零或者大于50,正常范围在18.5~23.9之间)就抛出一个BIM异常。
全代码如下:

import java.util.Scanner;

public class BIM extends Exception {
    private double bim;

    public void bim_check(double bim) throws BIMException {
        if (bim < 10 || bim > 50) {
            throw new BIMException("你输入的体重或身高不合理,请重新输入");
        } else if (bim > 23.9 || bim < 18.5) {
            System.out.printf("你的BIM指数为%.2f,不正常", bim);
            System.out.println("");
        } else {
            System.out.printf("你的BIM指数为%.2f,正常", bim);
            System.out.println("");
        }
    }

    public void bim_count() {
        Scanner scanner = new Scanner(System.in);
        System.out.println("请输入你的体重(千克):");
        double a = scanner.nextDouble();
        System.out.println("请输入你的身高(米):");
        double b = scanner.nextDouble();
        bim = a / (b * b);
    }

    public double getBim() {
        return bim;
    }

    public void setBim(int bim) {
        this.bim = bim;
    }
}

测试类:

import java.util.Scanner;

public class Test {
    public static void main(String[] args) {
        BIM b = new BIM();
        System.out.println("进行BIM测试请按1");
        System.out.println("结束测试请按其他任意键");
        Scanner sc = new Scanner(System.in);
        if (sc.hasNext()) {
            int num = sc.nextInt();
            while (num == 1) {
                b.bim_count();
                try {
                    b.bim_check(b.getBim());
                } catch (BIMException B) {
                    B.printStackTrace();
                }
            }
        }
    }
}
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值