自定义异常类以及使用方式

public class AmountOfMoneyMissMatchException extends RuntimeException {
    public AmountOfMoneyMissMatchException() {
        super();
    }

    public AmountOfMoneyMissMatchException(String message) {
        super(message);
    }
}
public class AmountOfMoneyOutOfBoundException extends RuntimeException {
    public AmountOfMoneyOutOfBoundException() {
        super();
    }

    public AmountOfMoneyOutOfBoundException(String message) {
        super(message);
    }
}
public class NoMatchUserException extends RuntimeException {
    public NoMatchUserException() {
        super();
    }

    public NoMatchUserException(String message) {
        super(message);
    }
}
public class PasswordNotMatchException extends RuntimeException {
    public PasswordNotMatchException() {
        super();
    }

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


}

业务层接口:

public interface UserService {
    User login(Scanner scanner);
    void getMoney(User user,Scanner scanner);
    void saveMoney(User user,Scanner scanner);
    void update(User user,Scanner scanner);
}

接口实现类:

public class UserServiceImpl implements UserService {
    @Override
    public User login(Scanner scanner) {
        User user = new User();
        System.out.println("请输入您的用户名:");
        user.setName(scanner.next());
        System.out.println("请输入您的密码:");
        user.setPass(scanner.next());
        if (!(UserInfor12.USER_NAME.equals(user.getName())) || !(UserInfor12.USER_PWD.equals(user.getPass()))) {
            throw new NoMatchUserException("用户名或密码不匹配");
        }
        user.setTime(System.currentTimeMillis());
        return user;
    }

    @Override
    public void getMoney(User user, Scanner scanner) {
        int num = scanner.nextInt();
        if (num % 100 != 0) throw new AmountOfMoneyMissMatchException("输入金额不合法");
        else if (num > 5000) throw new AmountOfMoneyOutOfBoundException("输入金额超出最大金额");
        else if (num > user.getBalance()) throw new AmountOfMoneyOutOfBoundException("余额不足");
        System.out.println("取款成功");
        user.setBalance(user.getBalance() - num);
    }

    @Override
    public void saveMoney(User user, Scanner scanner) {
        int num = scanner.nextInt();
        if (num % 100 != 0) throw new AmountOfMoneyMissMatchException("输入金额不合法");
        else if (num > 10000) throw new AmountOfMoneyOutOfBoundException("输入金额超出最大金额");
        System.out.println("存款成功");
        user.setBalance(user.getBalance() + num);
    }

    @Override
    public void update(User user, Scanner scanner) {
        System.out.println("请输入原密码:");
        String pass;
        int n = 3;
        while (n > 0) {
            n--;
            if (n == 0) throw new PasswordNotMatchException("密码输入错误超过三次,已返回上一级");
            pass = scanner.next();
            if (!UserInfor12.USER_PWD.equals(pass)) System.out.println("输入密码不正确");
            if (UserInfor12.USER_PWD.equals(pass)) {
                System.out.println("请输入修改后的密码");
                pass = scanner.next();
                if (UserInfor12.USER_PWD.equals(pass)) throw new PasswordNotMatchException("修改前后密码不能一致");
            }
        }

    }
}
posted @   Liku007  阅读(21)  评论(0编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
阅读排行:
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?
点击右上角即可分享
微信分享提示