✨hello,进来的小伙伴们,你们好呐!✨
🍊🍊系列专栏:【JavaSE】
🍰🍰作者简介:一名双非本科大三的科班在读小白,我很平凡,学会努力!
✈️✈️接着上篇,我们认识到了什么是异常,。以及如何处理异常,那么在我们的学习过程中,可能会遇到出了系统给出的其他的异常,那么这个时候我们就可以通过自定义异常来检测程序出现的问题。
⛵⛵实例:模拟实现自定义异常登录
public class LogIn {
private String userName = "lingchenqi";
private String password = "123456";
public static void loginInfo(String userName, String password) {
if (!this.userName.equals(userName)) {
System.out.println("用户名错误!");
}
if (!this.password.equals(password)) {
System.out.println("密码错误!");
}
System.out.println("登陆成功");
}
public static void main(String[] args) {
loginInfo("lingchenqi", "123456");
}
}
🛰️🛰️此时我们在处理用户名密码错误的时候可能就需要抛出两种异常. 我们可以基于已有的异常类进行扩展(继承), 创建和我们业务相关的异常类.
⛴️⛴️解决方案:
1. 自定义异常类,然后继承自Exception 或者 RunTimeException。
2. 实现一个带有String类型参数的构造方法,参数含义:出现异常的原因。
1.首先我们把代码放在一个包下,这样看起来方便一点,我们新建一个包GetException.
2.在这个包下有三个类一个是我们的实现类 还有两个是我们自定义的异常类。
3.异常类UserNameException
public class PasswordException extends RuntimeException{
public PasswordException(String message){
super(message);
}
}
4.异常类PasswordException
public class UserNameException extends RuntimeException{
public UserNameException(String message){
super(message);
}
}
5.实现类Login
public class LogIn {
private String userName = "lingchenqi";
private String password = "123456";
public void loginInfo(String userName, String password)
throws UserNameException, PasswordException {
try {
if (!this.userName.equals(userName)) {
throw new UserNameException("用户名错误!");
}
if (!this.password.equals(password)) {
throw new PasswordException("密码错误!");
}
System.out.println("登陆成功");
} catch (UserNameException e) {
e.printStackTrace();
} catch (PasswordException e) {
e.printStackTrace();
}
}
public static void main(String[] args) {
LogIn login = new LogIn();
login.loginInfo("lingchenqi","123456");
}
}
运行结果1:登录成功时
运行结果2:用户名错误
运行结果3:密码错误
🚦🚦注意:
自定义异常通常会继承自 Exception 或者 RuntimeException。
继承自 Exception 的异常默认是受查异常。
继承自 RuntimeException 的异常默认是非受查异常。