精华内容
下载资源
问答
  • 自定义异常类

    2020-08-28 15:10:00
    自定义异常类: Java提供的异常类,不够我们使用,需要自己自定义一些异常类 格式: Public class xxxExcepiton extends Exception / RuntimeException{ 添加一个空参数的构造方法 添加一个带异常信息的构造方法 } ...

    自定义异常类:
    Java提供的异常类,不够我们使用,需要自己自定义一些异常类
    格式:
    Public class xxxExcepiton extends Exception / RuntimeException{
    添加一个空参数的构造方法
    添加一个带异常信息的构造方法
    }
    注意:

    1. 自定义异常类一般都是以Exception结尾,说明该类是一个异常类
    2. 自定义异常类,必须的继承Excetion或RuntimeException
      a) 继承Exception,那么自定义的异常类就是一个编译期异常,如果方法内部抛出了编译期异常,就必须处理这个异常,要么throws,要么try catch
      b) 继承RuntimeException那么自定义的异常类就是一个运行期异常,无需处理,交给虚拟机处理(中断处理)
      案例如下:

    要求:我们模拟注册操作,如果用户名已存在,则抛出异常并提示:亲,该用户名已经被注册。
    首先定义一个登陆异常类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 LoginException{
            for (String name : names) {
                if(name.equals(uname)){//如果名字在这里面 就抛出登陆异常
                    throw new RegisterException("亲"+name+"已经被注册了!");
                }
            }
            return true;
        }
    }
    
    展开全文

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 7,709
精华内容 3,083
关键字:

自定义异常类