目录
异常:在Java中,将程序执行过程中发生的不正常行为称为异常。
前言:在写自定义异常之前, 我们要先简单了解何为异常,为什么要自定义异常?
异常:在Java中,将程序执行过程中发生的不正常行为称为异常。
例如:算术异常,数组越界异常,空指针异常
异常也分为编译时异常(受检查异常)和运行时异常(非受检查异常)两种!
为什么要自定义异常呢?
在Java中,虽然已经内置了丰富的异常类,但是我们实际开发中还会遇到更多的异常,这时就需要维护符合我们实际情况的异常结构。
实现异常:用户登录功能
public class Login{
private static String userName="me";
private static String Password="123456";
public static void loginInfo(String userName,String password){
if(!userName.equals(userName)){
}
if(!password.equals(password)){
}
System.out.println("登录成功");
}
public static void main(String[] args) {
loginInfo("me","123456");
}
}
在处理时,可能会出现用户名出错,或者密码出错两种异常,可以对已有的异常类进行拓展,创建和我们相关的异常类
具体方式:1.自定义异常类,继承自Exception或者RunTimeException
2.实现一个带有String类型参数的构造方法,参数含义:出现异常的原因
import sun.security.util.Password;
import javax.lang.model.element.NestingKind;
import java.util.Scanner;
class UserNameError extends Exception{
public UserNameError(String message){
super(message);
}
}
class PasswordError extends Exception{
public PasswordError(String message){
super(message);
}
}
public class Login {
private static String userName="me";
private static String Password="123456";
public static void loginInfo(String user,String password)throws UserNameError,PasswordError{
if(!user.equals(userName)){
throw new UserNameError("用户名错误");
}
if(!password.equals(Password)){
throw new PasswordError("密码错误");
}
System.out.println("登录成功");
}
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
String user=sc.nextLine();
String password=sc.nextLine();
try {
loginInfo(user,password);
} catch (UserNameError e) {
e.printStackTrace();
} catch (PasswordError e) {
e.printStackTrace();
}
}
}
运行结果:
注意:自定义异常通常会继承Exception或者RuntimeException
继承自Exception的异常默认是受查异常
继承自Runtime Exception的异常默认是非受查异常