自定义的异常、自定义异常类的练习
自定义的异常
自定义异常:java提供的异常类,不够我们使用,需要自定一些异常类
格式:public class xxxExcepiton extends Exeption / RuntimeExcetion
添加一个空参数的构造方法
添加一个带异常信息的构造方法
注意:自定义异常类一般都是Excetion结尾,说明该类时一个异常类
自定义异常类,必须的继承Excetion或者RuntimeExcetion
继承:Excetion,那么自定义异常就是一个编译期异常,如果方法内部抛出编译期异常就必须处理这个异常要不throws要不 try...catch
继承:RuntimeExcetion那么自定义的异常类就是一个运行期的异常,无需处理,交给虚拟机处理
案例:
public class Ex3 extends Exception {
// 添加一个空参数的构造方法
public Ex3(){
super();
}
}
自定义异常类的练习
要求:我们模拟注册,如果用户存在,则抛出异常提示:亲,该账户已经存在;
分析:使用数组,保存经过注册过的用户名
使用Scanner获取用户输入的注册用户
定义一个方法,对用户输入的用户名字进行判断
遍历已经注册过用户名的数组,获取每一个用户名
使用获取的用户名和用户输入的用户名比较进判断
true:用户名字已经存在,抛出RuntimeExcetion异常,告知:该用户已经被注册
false:继续遍历比较
如果循环结束了,还是没有找到重复的 那么是提示:注册成功!
案例:
public class LianxiEx {
// 先定义已经被注册过的
static String[] arr ={"张三","李四","王五"};
public static void main(String[] args) throws ReflectiveCopyException {
System.out.println("输入的用户名:");
Scanner sc = new Scanner(System.in);
String next = sc.next();
cha(next);
}
public static void cha(String username) throws ReflectiveCopyException {
for (String s : arr) {
if (s.equals(username)) {
throw new ReflectiveCopyException("该户已经存在!");
}
}
System.out.println("注册成功!");
}
}
看打印输出:
在输入一个没有被注册过的: