自定义异常实现登录(续上次图书管理系统改)

简介: 自定义异常实现登录(续上次图书管理系统改)

如果我们学了异常,那我们是否可以把异常加到我们的系统中呢,如果增加了异常,密码异常或者用户名异常这样直接的提示,可以提高用户的体验

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);
        }
 
 
 
    }
}

如果密码错误会报密码异常

同理用户名错误也会报异常

目录
相关文章
|
7月前
|
小程序
小程序常见简单界面功能属性记录
小程序常见简单界面功能属性记录
120 0
|
8月前
|
前端开发 数据库
JavaWeb05(删除&增加&修改功能实现&连接数据库)
JavaWeb05(删除&增加&修改功能实现&连接数据库)
|
Python
十八、通讯录管理系统Python版(对学生的增加,删除,修改,查询,遍历所有学员信息,退出系统,六个功能的实现)
十八、通讯录管理系统Python版(对学生的增加,删除,修改,查询,遍历所有学员信息,退出系统,六个功能的实现)
十八、通讯录管理系统Python版(对学生的增加,删除,修改,查询,遍历所有学员信息,退出系统,六个功能的实现)
|
10天前
学生管理系统-登录操作设计
学生管理系统-登录操作设计
12 1
|
11月前
|
SQL 数据库 数据安全/隐私保护
学生管理系统错误(2)——“-2147217887”问题
学生管理系统错误(2)——“-2147217887”问题
|
11月前
|
SQL 网络协议 数据库连接
学生管理系统之登录错误 233
学生管理系统之登录错误 233
85 0
|
11月前
|
SQL 数据库连接 数据库
学生管理系统错误(1)——“91”问题
学生管理系统错误(1)——“91”问题
|
存储 缓存 前端开发
用户信息、账号设置。换做是你会怎么做代码实现?
在网站的应用场景下,对于用户的信息展示与账号设置的都是一个绕不过的问题。解决这个问题,最重要的是,怎么拦截未登录用户进入这个功能内?这就意味着必须在每次动态请求时,校验登录状态以及让请求持有用户(在服务器端可查询到对应用户)。当然,我们必须考虑多线程并发的情况,简单地将用户信息放在一个公共的类或者一个容器内,可能会导致数据冲突。现在流行的做法就是利用拦截器去保证动态请求的合法性,而不是在重复造轮子式一次次检查,并且利用 ThreadLocal 进行数据线程隔离保护。本文就将介绍在拦截器的作用下,用户的信息展示与账户设置该如何正确地处理。当然,接下来,也会有更多更有技术力的文章等候着你,欢迎大家
51 0
|
前端开发
前端工作总结107-修改记录取消文本提示ele提示
前端工作总结107-修改记录取消文本提示ele提示
101 0
|
SQL 数据库连接 数据库
机房收费系统登陆客户端错误——运行时错误“91”
机房收费系统登陆客户端错误——运行时错误“91”
129 0
机房收费系统登陆客户端错误——运行时错误“91”