自定义异常

Posted wurengen

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了自定义异常相关的知识,希望对你有一定的参考价值。

为什么需要自定义异常类

我们说了Java中不同的异常类,分别表示着某一种具体的异常情况,那么在开发中总是有些异常情况是SUN没有定义好的,此时我们根据自己业务的异常情况来定义异常类。

什么是自定义异常类:

  • 在开发中根据自己业务的异常情况来定义异常类.

异常类如何定义:

  • 自定义一个编译期异常: 自定义类 并继承于 java.lang.Exception 。
  • 自定义一个运行时期的异常类:自定义类 并继承于 java.lang.RuntimeException 。
格式:
public class XXXException. extends Exception / RuntimeException{
  添加一个空参数构造
  添加一带异常信息的构造方法
}
自定义异常
package demo02;

public class RegisterException extends Exception{

        /**
         * 空参构造
         */
        public RegisterException() {
        }

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

测试类

package demo02;

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

    public static void main(String[] args) {
        //调用方法
        try {
            // 可能出现异常的代码
            checkUsername("jill");
            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;
    }

}

执行结果

demo02.RegisterException: 亲jill已经被注册了!
    at demo02.Demo.checkUsername(Demo.java:22)
    at demo02.Demo.main(Demo.java:10)

 

 

以上是关于自定义异常的主要内容,如果未能解决你的问题,请参考以下文章

VSCode自定义代码片段6——CSS选择器

VSCode自定义代码片段(vue主模板)

VSCode自定义代码片段——声明函数

VSCode自定义代码片段——.vue文件的模板

VSCode自定义代码片段——git命令操作一个完整流程

VSCode自定义代码片段8——声明函数