一 什么是Java的异常?
当程序发生错误,没有按照正常的流程运行时,就是异常,所以异常的问题也就是程序出错了,怎么办?
那么Java中专门有异常处理机制,将封装的异常类型来代表错误,
并且使用
try{
//这里是错误情况发生地
}catch(XXXException e){
//多个catch块捕捉对应类型的异常,并在这里做处理,比如
//throw 一个新的异常
//打印异常堆栈信息,打印日志
//做相应的业务逻辑处理
}finally{
//总会被执行到,多用来关闭资源
}
这样的形式来进行处理
二 既然Java中异常是封装为类的,既有结构是怎么样的?
如下图所示:
1.Java中顶级的异常类是Throwable
2.错误,Error类代表JVM相关的错误,一般不会在代码里处理
3.异常,Exception及其子类是异常机制的核心,常涉及到的就是这里
三.异常的使用
首先怎么自定义一个异常?
一个异常类需要包含:
1.一个无参构造函数
2.一个带有String参数的构造函数,并传递给父类的构造函数。
3.一个带有String参数和Throwable参数,并都传递给父类构造函数
4.一个带有Throwable 参数的构造函数,并传递给父类的构造函数。
比如:
public class BaseTypeException extends Exception {
private static final long serialVersionUID = 8507902008031818278L;
private String type;
private String detail;
public BaseTypeException() {
}
public BaseTypeException(String type, String message, String detail) {
super(message);
this.type = type;
this.detail = detail;
}
public BaseTypeException(String message, Throwable cause) {
super(message, cause);
}
public BaseTypeException(Throwable cause) {
super(cause);
}
public BaseTypeException(String message, Throwable cause, boolean enableSuppression, boolean writableStackTrace) {
super(message, cause, enableSuppression, writableStackTrace);
}
public String getType() {
return type;
}
public String getDetail() {
return detail;
}
}
四:检查异常和非检查异常
我理解的检查异常是既定情况会出现的异常,某种意义上是调用链里的通信机制,是除Error和RuntimeException外的异常
比如参数校验时,当某个参数不符合条件,可以产生一个异常,抛给上游调用者,做相应处理
非检查异常呢?不可预知的错误,异常情况,常预示着代码是有问题的,是
Error和RuntimeException及其子类
比如,NullPointerException,ArithmeticException(除数为0)
参考资料:http://www.importnew.com/26613.html