java自定义异常练习小案例

题目描述

编写程序,使用自定义异常,实现判断用户输入年龄,如果用户输入的年龄为负数,则抛出NegativeAgeException异常;如果用户输入的年龄大于125,抛出TooOldException异常;如果用户输入的不是数字,抛出NotNumberException异常。

源代码

以下是使用自定义异常实现判断用户输入年龄的Java程序示例:

import java.util.Scanner;

// 自定义异常类:年龄为负数
class NegativeAgeException extends Exception {
    public NegativeAgeException(String message) {
        super(message);
    }
}

// 自定义异常类:年龄过大
class TooOldException extends Exception {
    public TooOldException(String message) {
        super(message);
    }
}

// 自定义异常类:输入非数字
class NotNumberException extends Exception {
    public NotNumberException(String message) {
        super(message);
    }
}

public class AgeValidator {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);

        try {
            System.out.print("请输入年龄: ");
            int age = validateAge(scanner.nextLine());
            System.out.println("年龄合法,输入的年龄为: " + age);
        } catch (NegativeAgeException e) {
            System.out.println("年龄不能为负数: " + e.getMessage());
        } catch (TooOldException e) {
            System.out.println("年龄过大: " + e.getMessage());
        } catch (NotNumberException e) {
            System.out.println("输入的不是数字: " + e.getMessage());
        }
    }

    // 验证年龄是否合法
    public static int validateAge(String input) throws NegativeAgeException, TooOldException, NotNumberException {
        try {
            int age = Integer.parseInt(input);
            if (age < 0) {
                throw new NegativeAgeException("年龄不能为负数");
            } else if (age > 125) {
                throw new TooOldException("年龄过大");
            }
            return age;
        } catch (NumberFormatException e) {
            throw new NotNumberException("输入的不是数字");
        }
    }
}

在这个示例程序中,我们定义了三个自定义异常类:NegativeAgeExceptionTooOldExceptionNotNumberException。每个异常类都继承自Exception类,并通过构造函数传入异常信息。

AgeValidator类的main方法中,我们首先创建一个Scanner对象用于读取用户输入。然后,调用validateAge方法验证用户输入的年龄。

validateAge方法接受一个字符串参数作为用户输入的年龄,然后尝试将其转换为整数类型。如果转换成功,我们判断年龄是否为负数或者是否大于125,如果是,则抛出相应的自定义异常。如果转换失败,则抛出NotNumberException异常。

main方法中,我们使用try-catch语句捕获可能抛出的自定义异常,并输出相应的错误信息。

请注意,在validateAge方法中,我们使用了NumberFormatException来捕获用户输入非数字的情况,并抛出NotNumberException异常。

运行截图

图片[1]-java自定义异常练习小案例-QQ沐编程

© 版权声明
THE END
喜欢就支持一下吧
点赞9赞赏 分享