Java异常机制解析

一 什么是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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值