Java基础之异常机制
创作不易,如果本篇博客对您有一定的帮助,大家记得留言+点赞哦。
Java有着非常强大的异常处理机制,异常的祖先是Throwable,有如下两个子类:
Error:表示错误,错误产生后程序员不能通过代码的方式纠正,只能事先避免,好比生命已经停止。
Exception:表示异常,异常产生后程序员可以通过代码的方式纠正,使程序继续运行,是必须要处理的
异常分为编译时异常和运行时异常。
编译时异常又叫编译时被监测的异常:在程序编译过程中监测到非运行时异常的异常,出现该异常要么向上抛出,要么捕获处理。
运行时异常(runtimeException及其子类):在程序编译过程中监测到出现运行时异常,函数上或内部可以直接抛出异常,不需要捕获和声明。
总体异常的分类
处理异常的方式
抛出异常 throw
声明异常 throws 向上抛出
异常捕获 try-catch 自己处理
static String[] usernames={"张三","赵四","王五"};
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
System.out.println("请输入注册的名字!");
String next = sc.next();
//try-catch捕获异常
try {
checkUsername(next);
} catch (RegisterException e) {
e.printStackTrace();
}
}
public static void checkUsername(String usrename) throws RegisterException {//声明异常
for (String name : usernames) {
if (name.equals(usrename)){
throw new RegisterException("亲,该用户已经被注册!");//抛出异常
}
}
System.out.println("恭喜您,注册成功!");
}
打印异常的方法
public String getMessage() :获取异常的描述信息,原因(提示给用户的时候,就提示错误原因。
public String toString() :获取异常的类型和异常描述信息(不用)。
public void printStackTrace() :打印异常的跟踪栈信息并输出到控制台
具有继承关系的异常
如果父类抛出了多个异常,子类重写父类方法时,抛出和父类相同的异常或者是父类异常的子类或者不抛出异常。
父类方法没有抛出异常,子类重写父类该方法时也不可抛出异常。此时子类产生该异常,只能捕获处理,不能声明抛出
自定义异常类
需要继承Exception(编译器异常)或者RunTimeException(运行时异常)
public class RegisterException extends Exception {
public RegisterException() {
}
public RegisterException(String message){
super(message);
}
}