关于 Java 异常体系:
–顶层的 Throwable, 派生出两个重要的子类: Error 和 Exception;
–Error 是指 Java 运行时的内部错误和资源耗尽错误,不抛出此类异常,这类错误一旦发生除了告知用户并终止程序外别无他发,一般很少发生;
–Exception 是程序猿一般使用的异常类的父类;
–其中 Exception 有一个重要的子类: RuntimeException, 这个子类中派生出我们很多常见的异常类如: IndexOutOfBoundException、NullPointerException等.
–Java 语言规范将派生于 Error 类或者 RunTimeException 类的所有异常称为非受查异常,除此之外其他异常称为受查异常.
如果一段代码可能出现受查异常, 那么必须进行显示处理:
1、使用 try catch包裹起来
2、在方法上加上异常说明, 相当于将异常处理动作交给上层调用者(甩锅)
关于自定义异常类:
–通常继承自 Exception 或 RunTimeException
–继承自 Exception 的异常默认为受查异常
–继承自 RunTimeException 的异常默认为非受查异常
**
import java.util.Scanner;
class NameException extends Exception {
public NameException(String message) {
super(message);
}
}
class PasswordException extends Exception {
public PasswordException(String message) {
super(message);
}
}
public class Test {
private static String name = "CMY";
private static String password = "123456";
public static void main(String[] args) throws PasswordException, NameException {
Scanner scanner = new Scanner(System.in);
System.out.println("请输入用户名: ");
String name = scanner.next();
System.out.println("请输入密码: ");
String password = scanner.next();
login(name,password);
}
public static void login(String name, String password) throws PasswordException, NameException {
if (!Test.name.equals(name)) {
throw new NameException("用户名错误");
}
if (!Test.password.equals(password)) {
throw new PasswordException("密码错误");
}
System.out.println("登陆成功!");
}
}
**