现有异常类型,不能表示业务中的错误情况,可以自定义新的异常类型
1起一个合适的类名
UserNameNotFoundException
WrongPasswordException
2选择一个合适父类
Exception(没有管道,需要throws管道)
RuntimeException(有默认管道)
添加合适的构造方法
例子:
用户登录,用户名错误或密码错误,分别用两个异常类型来表示
UserNameNotFoundException
WrongPasswordException
public class UserNameNotFoundException extends Exception{
private static final long serialVersionUID = 1L;
public UserNameNotFoundException() {
super();
}
public UserNameNotFoundException(String message, Throwable cause, boolean enableSuppression,
boolean writableStackTrace) {
super(message, cause, enableSuppression, writableStackTrace);
}
public UserNameNotFoundException(String message, Throwable cause) {
super(message, cause);
}
public UserNameNotFoundException(String message) {
super(message);
}
public UserNameNotFoundException(Throwable cause) {
super(cause);
}
}
public class WrongPasswordException extends Exception{
private static final long serialVersionUID = 1L;
public WrongPasswordException() {
super();
}
public WrongPasswordException(String message, Throwable cause, boolean enableSuppression,
boolean writableStackTrace) {
super(message, cause, enableSuppression, writableStackTrace);
}
public WrongPasswordException(String message, Throwable cause) {
super(message, cause);
}
public WrongPasswordException(String message) {
super(message);
}
public WrongPasswordException(Throwable cause) {
super(cause);
}
}
public class UserDefineException {
public static void main(String[] args) {
String userName = "apple";
String password = "123";
handleLogin(userName, password);
userName = "admin";
password = "456";
handleLogin(userName, password);
password = "123";
handleLogin(userName, password);
}
public static void handleLogin(String userName, String password) {
try {
login(userName, password);
System.out.println("登录成功");
} catch (UserNameNotFoundException e) {
System.out.println("用户名错误");
} catch (WrongPasswordException e) {
System.out.println("密码错误");
}
}
private static void login(String userName, String password)
throws UserNameNotFoundException, WrongPasswordException {
if (!userName.equals("admin"))
throw new UserNameNotFoundException();
if (!password.equals("123"))
throw new WrongPasswordException();
}
}
运行结果
用户名错误
密码错误
登录成功