【Java基础进阶笔记】- Day05 - 第三章 自定义异常

Java基础进阶笔记 - Day05 - 第三章 自定义异常

系统:Win10
JDK:1.8.0_121
IDE:IntelliJ IDEA 2017.3.7

3.1 概述

为什么需要自定义异常类:
我们说了Java中不同的异常类,分别表示着某一种具体的异常情况,那么在开发中总是有些异常是SUN没有定义好的,此时我们根据自己业务的异常情况来定义异常类。例如年龄负数问题,考试成绩负数问题等等,那么我们能不能自己定义异常呢?
什么是自定义异常类:
在开发中根据自己业务的异常情况来定义异常类。如自定义一个业务逻辑异常:RegisterException - 注册异常类
异常类如何定义:

  1. 自定义一个编译期异常:自定义类并继承java.lang.Exception
  2. 自定义一个运行期异常类:自定义一个类并继承于java.lang.RuntimeException

3.2 自定义异常的练习

要求:模拟注册操作,如果用户名已存在,则抛出异常并提示:该用户名已经被注册
首先顶一个登录异常类:RegisterException

// 业务逻辑异常
public class RegisterException extends Exception {
    
    
    // 空参构造
    public RegisterException() {
    
    
        super();
    }

    /**
     * @param message 表示异常提示信息
     */
    public RegisterException(String message) {
    
    
        super(message);
    }
}

模拟注册操作,使用List集合模拟数据库中存储的数据,并提供当前注册账号是否存在用于判断

public class RegisterDemo {
    
    
    private static List<String> list = getAccount();

    public static void main(String[] args) {
    
    
        String name = "麻子";
        // 调用方法
        try {
    
    
            // 可能出现异常的代码
            checkUsername(name);
            // 如果没有异常就是注册成功,将账号进行添加
            list.add(name);
            System.out.println(name + " 注册成功!");
        } catch (RegisterException e) {
    
    
            e.printStackTrace();
        }
    }

    // 模拟数据库中已经存在的账号
    private static List<String> getAccount() {
    
    
        List<String> list = new ArrayList<>();
        list.add("张三");
        list.add("李四");
        list.add("王二");
        list.add("麻子");
        return list;
    }

    // 判断当前注册账号是否存在
    // 因为是编译期异常,所以抛出该异常需要声明抛出
    public static boolean checkUsername(String name) throws RegisterException {
    
    
        for (String s : list) {
    
    
            // 如果名字已经在里面,就抛出注册异常
            if (name.equals(s)) {
    
    
                throw new RegisterException(name + "账号已经被注册了!");
            }
        }
        return true;
    }
}

运行结果:
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/qq_35132089/article/details/113357128