编写程序模拟用户注册:
1、程序开始执行的时候,提示用户输入“用户名”和“密码”信息
2、输入信息之后,后台JAVA程序模拟用户注册
3、注册时用户名要求长度在【6-14】之间,小于或者大于都表示异常
注意:
完成注册的方法放到一个单独的类中
异常类需要自定义
经验:
引用等于null的这个判断最好放到所有条件的最前面,因为短路与的执行有可能会造成空指针异常username == null 不如写成 null == username
username.equals("abc") 不如写成 "abc".equals(username)
代码演示:
创建自定义异常类:
package com.lbj.javase.exceptionTest.homework;/*** @author LBJ* @version V1.0* @Package com.lbj.javase.exceptionTest.homework* @date 2021/3/26 19:03* @Copyright 公司*/
public class IllegalNameException extends Exception{public IllegalNameException() {}public IllegalNameException(String message) {super(message);}
}
创建用户类:
package com.lbj.javase.exceptionTest.homework;/***用户业务类,处理用户相关的业务:*例如:登录、注册等功能*/
public class UserService {/*** 用户注册* @param username 用户名* @param password 密码* @throws IllegalNameException 当用户名为null,或者用户名长度小于6,大于14,会出现该异常*/public void register(String username,String password) throws IllegalNameException {if(null == username || username.length()<6 || username.length()>14){IllegalNameException e=new IllegalNameException("您输入的用户名不合法,长度必须在【6-14】位之间");throw e;}System.out.println("您注册成功,欢迎:"+username);}
}
创建测试类:
package com.lbj.javase.exceptionTest.homework;/*** @author LBJ* @version V1.0* @Package com.lbj.javase.exceptionTest.homework* @date 2021/3/26 19:54* @Copyright 公司*/
public class Test {public static void main(String[] args) {// 创建对象UserService userService=new UserService();
// try {
// userService.register("小明","1234567");
// } catch (Illegal NameException e) {
// e.printStackTrace();
// }// 用户名和密码不从控制台接收的时候try {userService.register(null,"1234567");} catch (IllegalNameException e) {System.out.println(e.getMessage());//e.printStackTrace();}}
}
测试结果:
源码分析:
一步一步可以通过看源码得出e.getMassage的信息到底从哪里来
按住ctrl并单击进入
下一步:
下一步:
(message传给detailMessage)
detailMessage其实是一个实例变量
其实就是将实例化后的异常类中的括号中描述的异常信息,传递给detailMassage
然后e.getMessage就是将detailMessage调用出来而已
这就是此异常类的一次实例,其中的源码意思已经非常清晰