Java之自定义异常

/*
 * 自定义异常:自己声明一个类,继承Exception
 */
public class Demo {
	//这里我们使用数组模拟数据库 进行 自定义异常处理
	static String[] userNames = {"张三","李四","王五","周周"};
	
	public static void main(String[] args) {
		try {
			regist("张三"); //使用用户名:阿发  进行注册
			System.out.println("注册成功!!进入登陆页面"); //如果调用注册方法没有出现异常,则会往下执行,进入登陆页面
			System.out.println(Arrays.toString(userNames));
		} catch (UsernameException e) {
			System.err.println("请重新注册,原因:"+e.getMessage());//如果调用注册方法出现了异常,则会直接执行catch:重新注册
		}
	}

	public static void regist(String username) throws UsernameException{
		for (String n : userNames) {  //遍历userNames数组中的每一个元素
			if(username.equals(n)){  //把遍历出来的元素依次与name相比较。   name是用户注册的用户名
				/*
				 * 表示用户名重复了,不能往下执行:选择使用抛出异常的方式结束当前方法,建议使用自定义异常
				 * 自己在方法体中抛异常。  使用:throw 异常对象;
				 * 效果:方法体中使用throw抛出的异常对象,抛给了当前方法
				 */
				throw new UsernameException("用户名重复!!");
			}
		}
		//for执行结束if都没有执行,说明用户名肯定不重复
		/*
		 * 处理方式:把name添加到userNames数组中
		 * 步骤 1.  把userNames数组的容量扩大1个
		 * 	   2.  把name赋值给userNames数组的最后一个元素
		 * 
		 *  copyOf(源数组,新数组的长度):  效果:先创建一个指定长度的新数组,从源数组中复制所有元素,粘贴到新数组中
		 * 	该方法的返回值 就是 新数组
		 */
		userNames = Arrays.copyOf(userNames, userNames.length+1); //把userNames数组容量扩大一个
		userNames[userNames.length-1] = username; //把用户注册的用户写入userNames数组中
	}
}
/*
 * UserException继承Exception  ==》 可以理解为:UserException就是Exception
 */
class UsernameException extends Exception{
	public UsernameException(String message){ //给异常信息赋值
		super(message);
	}
}

运行结果图:

Java之自定义异常_第1张图片

你可能感兴趣的:(Java之自定义异常,-----❶,JavaSE基础)