Java异常体系
异常的概念
程序不正常的退出。
java语言的异常
java语言的所有异常的父类是Throwable,该类主要有两个直接的子类,分别是:
- Error
产生的原因主要硬件原因,比如内存空间的不足,磁盘损坏等。 - Exception
Java程序运行过程中产生的(程序的逻辑出错,程序运行的内存不足等都会导致该异常),
Exception又分为两种分别是:
- 编译异常
- 运行时异常
编译时异常
编译时异常必须要显示抛出给方法的调用者,或者必须使用try....catch异常捕获机制
来捕获异常
运行时异常
运行时异常不会出现编译错误,只有在程序运行出错的时候会打印异常相关信息,运行时异常的父类是RuntimeException,该异常不需要显示抛出
也不需要try....catch机制捕获。
异常的处理机制
异常的处理机制主要有两种:
-
第一种是将异常抛出给给调用者(调用者指的是方法),通过throws 关键字将异常抛出给方法的调用者,比如:
-
将异常使用 try…catch机制捕获
try{
语句块1
语句块2
语句块3
…
语句块n
语句块n+1
}catch(异常类型1 e1){
语句块1
}catch(异常类型2 e2){
语句块2
}catch(异常类型3 e3){
语句块3
}catch(异常类型4 e4){
语句块4
}catch(异常类型5 e5){
语句块5
}finally{
//此处的语句库无论如何都会被只能
}总结:程序会依次执行语句块1到语句块n+1,如果当执行到某一个语句块的时候出现了 异常,那么Java程序就会到相应的catch块
里面去寻找有没有相应的异常和改异常类型匹配,如果匹配那么及使用该catch块来处理 该异常,否则该异常将交给虚拟机处理。finally块不管程序是否出现异常都会被执行,这种设计主要可以帮助我们关闭某些资源连接
注意:异常的顺序必须按照从小到大的方式捕获。
手动抛出异常
手动抛出异常使用 throw 关键字
语法为 : throw 异常对象。表示手动抛出的异常对象
自定义异常
主要集成RuntimeException类,添加上相应的构造器方法和自定义给的构造器方法例如:
package com.tedu.cn.api.ex;
public class PasswordException extends RuntimeException{
public PasswordException() {
}
public PasswordException(String message) {
super(message);
}
public PasswordException(String message, Throwable cause) {
super(message, cause);
}
public PasswordException(Throwable cause) {
super(cause);
}
public PasswordException(int type,String message){
switch (type){
case 1:
System.out.println(message);
break;
case 2:
System.out.println(message);
break;
case 3:
System.out.println(message);
break;
}
}
public PasswordException(String message, Throwable cause, boolean enableSuppression, boolean writableStackTrace) {
super(message, cause, enableSuppression, writableStackTrace);
}
}