自定义异常和练习自定义异常

自定义异常

java中不同的异常类,分别表示着某一种具体的异常情况 那么在开发中总是有些异常情况是SUN没有定义好的

此时我们根据自己业务的异常情况来定义异常类 例如年龄负数,考试成绩负数的问题等

在JDK内部定义好的 但是实际开发中也会出现很多异常 这些异常很有可能在JDK中 没有定义过 我们可以自己定义

什么是自定义异常类:

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

自定义一个业务逻辑异常:RegisterException 一个注册异常类

异常类如何定义:

1.自定义一个编译器异常:自定义类 并继承于Exception 归属于java.lang

2.自定义一个运行时期的异常类:自定义类并继承于RuntimeException 归属于java.lang

异常类的格式

public class xxxExcepiton extends Exception{
   添加一个空参数的构造方法
   添加一个带异常信息的构造方法
}

异常类的注意:

1.自定义异常类一般都是以Exception结尾,说明该类是一个异常类

2.自定义异常类 必须的继承Exception或者RuntimeException

  • 继承Exception:那么自定义的异常类就是一个编译器异常 如果方法内部抛出了编译期异常 就必须处理这个异常 要么throws 要么try...catch
  • 继承RuntimeException:那么自定义的异常类就是一个运行期异常 无需处理 交给虚拟机处理(中断处理)

代码:

复制代码
public class RegisterException extends Exception{
    public RegisterException(){
        super();
    }
    public RegisterException(String message){
        super(message);
    }
}
复制代码

自定义异常的练习

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

分析:

1.使用数组保存已经注册过的用户名

2.使用Scanner获取用户输入的注册的用户名

3.定义一个方法 对用户输入的中注册的用户名进行判断

  • 遍历存储已经注册过用户名的数组 获取每一个用户名
  • 使用获取到的用户名和用户输入的用户名比较
    • true:用户名已经存在,抛出自己定义异常 并告知用户“亲,该用户名已经被注册”;
    • false:继续遍历比较
  • 如果循环结束了 还没有找到重复的用户名 提示用户“恭喜您 注册成功!”          

代码:

异常类:

复制代码
public class RegisterException extends Exception{
    public RegisterException(){
        super();
    }
    public RegisterException(String message){
        super(message);
    }
}
复制代码

测试类:

复制代码
public class test {
    static String[] arr={"张三","李四","王五"};

    public static void main(String[] args) throws RegisterException {
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入您要注册的用户名");
        String username = sc.next();
        checkUsername(username);
    }

    public static void checkUsername(String username) throws RegisterException {
        for (String name : arr) {
            if (name.equals(username)){
                throw new RegisterException("亲,该用户名已经被注册");
            }
        }
        System.out.println("恭喜您 注册成功");
    }
}
复制代码

 

posted @ 2022-10-17 10:08  想见玺1面  阅读(29)  评论(0编辑  收藏  举报