自定义异常:用户名、用户密码登陆

  实现一个简单的控制台版用户登陆程序, 程序启动提示用户输入用户名、密码. 如果用户名、密码出错, 使用自定义异常的方式来处理。

import java.util.Scanner;

public class Login {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        System.out.println("请输入用户名");
        String name = scanner.next();
        System.out.println("请输入密码");
        String password = scanner.next();
        // try catch 捕获 用户名异常和密码异常 两个异常
        try {
            login(name,password);
        } catch (NameException | PasswordException e) {
            e.printStackTrace();
        }
    }

// 注意:throws 是把一场交给上级处理了
//       我们需要在上级,即 login 方法调用的地方处理
    public static void login(String name, String password) throws NameException, PasswordException {
        if (! name.equals("admin")){
            throw new NameException("用户名错误");
        }
        if (! password.equals("666666")){
            throw new PasswordException("密码错误");
        }
    }
}
public class PasswordException extends Exception{
    public PasswordException(String message) {
        super(message);
    }
}
public class NameException extends Exception{
    public NameException(String log) {
        super(log);
    }
}
  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
首先,我们需要定义两个异常类:`UsernameException` 和 `PasswordException`,分别用于表示用户名错误和密码错误: ```java public class UsernameException extends Exception { public UsernameException(String message) { super(message); } } public class PasswordException extends Exception { public PasswordException(String message) { super(message); } } ``` 接下来,我们可以编写一个 `User` 类来表示用户,包含用户名密码: ```java public class User { private String username; private String password; public User(String username, String password) { this.username = username; this.password = password; } public String getUsername() { return username; } public String getPassword() { return password; } } ``` 最后,我们可以编写一个 `LoginService` 类来实现用户登录功能,包括验证用户名密码,并抛出相应的异常: ```java public class LoginService { private static List<User> users = new ArrayList<>(); static { users.add(new User("admin", "admin")); users.add(new User("user", "123456")); } public static void login(String username, String password) throws UsernameException, PasswordException { boolean usernameValid = false; boolean passwordValid = false; for (User user : users) { if (user.getUsername().equals(username)) { usernameValid = true; if (user.getPassword().equals(password)) { passwordValid = true; break; } else { throw new PasswordException("密码错误"); } } } if (!usernameValid) { throw new UsernameException("用户名错误"); } else if (!passwordValid) { throw new PasswordException("密码错误"); } } } ``` 在 `login` 方法中,我们先假设用户名密码都无效,然后遍历已经注册的用户列表,如果找到了匹配的用户名,再检查密码是否匹配。如果密码不匹配,抛出 `PasswordException` 异常;如果用户名也不匹配,抛出 `UsernameException` 异常。如果用户名密码都匹配,那么登录成功。 最后,我们可以编写一个测试类来测试登录功能: ```java public class Test { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); System.out.print("请输入用户名:"); String username = scanner.nextLine(); System.out.print("请输入密码:"); String password = scanner.nextLine(); try { LoginService.login(username, password); System.out.println("登录成功"); } catch (UsernameException e) { System.out.println("用户名错误:" + e.getMessage()); } catch (PasswordException e) { System.out.println("密码错误:" + e.getMessage()); } } } ``` 现在你可以测试一下这个程序,输入正确的用户名密码,应该可以看到输出“登录成功”;输入错误的用户名密码,应该可以看到相应的错误提示。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值