JAVA 自定义异常

为什么要自定义异常类

在开发中总是有些异常情况是 JAVA 没有定义好的,此时我们根据自己的异常情况来定义异常类。

例如:年龄 负数 问题,登录失败 等异常

自定义异常

类型

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

构造方法

  1. 无参的默认构造方法,
  2. 构造方法以字符串的形式接收一个定制的异常消息,并将该消息传递给父类的构造方法。

例子

要求:我们模拟注册操作,如果用户名已存在,则抛出异常并提示:亲,该用户名已经被注册。

首先定义一个登陆异常类RegisterException:

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

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

模拟登陆操作,使用数组模拟数据库中存储的数据,并提供当前注册账号是否存在方法用于判断。

public class Demo {
    // 模拟数据库中已存在账号
    private static String[] names = {"bill","hill","jill"};

    public static void main(String[] args) {     
        //调用方法
        try{
              // 可能出现异常的代码
            checkUsername("nill");
            System.out.println("注册成功");//如果没有异常就是注册成功
        }catch(RegisterException e){
            //处理异常
            e.printStackTrace();
        }
    }

    //判断当前注册账号是否存在
    //因为是编译期异常,又想调用者去处理 所以声明该异常
    public static boolean checkUsername(String uname) throws RegisterException{
        for (String name : names) {
            if(name.equals(uname)){//如果名字在这里面 就抛出登陆异常
                throw new RegisterException("亲"+name+"已经被注册了!");
            }
        }
        return true;
    }
}

原文出处:/show_1EF4s0LMNNEw.html