如果我们学了异常,那我们是否可以把异常加到我们的系统中呢,如果增加了异常,密码异常或者用户名异常这样直接的提示,可以提高用户的体验
1. 自定义的用户名异常类
package library.Exception; public class UserNameException extends RuntimeException{ public UserNameException(){ super(); } public UserNameException(String s){ super(s); } }
2. 自定义的密码异常类
package library.Exception; public class PassWordException extends RuntimeException{ public PassWordException(){ super(); } public PassWordException(String s){ super(s); } }
密码和用户名异常继承的是运行时异常
3. login方法的改造
package library; import library.Book.BookList; import library.Exception.PassWordException; import library.Exception.UserNameException; import library.User.AdminUser; import library.User.NormalUser; import library.User.User; import java.util.Scanner; public class Test { public String userName = "admin"; public String password = "1234"; public User login() throws UserNameException,PassWordException{ System.out.println("请输入您的姓名"); Scanner sc = new Scanner(System.in); String name = sc.nextLine(); System.out.println("请输入您的身份:1->管理员 0->普通用户"); int choice = sc.nextInt(); if(choice == 1){ sc.nextLine();//吃回车 System.out.println("输入用户名"); String name1 = sc.nextLine(); System.out.println("请输入密码"); String password = sc.nextLine(); if(!userName.equals(name1)){ throw new UserNameException("兄弟用户名错了"); } if(!this.password.equals(password)){ throw new PassWordException("兄弟密码错了"); } return new AdminUser(name); }else { return new NormalUser(name); } } public static void main(String[] args) { Test test = new Test(); User user = null; BookList bookList = new BookList(); try { user = test.login(); }catch (UserNameException e){ e.printStackTrace(); System.out.println("用户名异常"); }catch (PassWordException e){ e.printStackTrace(); System.out.println("密码异常"); }finally { } while (true) { int choice = user.menu(); user.doWork(choice,bookList); } } }
如果密码错误会报密码异常
同理用户名错误也会报异常