JAVA自学笔记(四)异常

Thinking in JAVA 3rd P312-P352

 

      JAVA的异常可以认为是一种更加严格的C++异常进化。

      JAVA的异常类都继承自Throwable类。JAVA的所有方法如果要使用异常(抛出异常)则必须要在方法声明上加上一个异常规范(throws加上异常类列表),这个异常规范规定的异常类范围必须大于等于方法所要抛出的异常类范围。如果类处于继承链当中,那么子类重写了基类方法的异常规范范围必须小于等于基类被重写方法的异常规范范围。这里有个特殊的情况,如果一个异常类继承自RuntimeException则该异常不必存在于异常规范当中,由此带来了一种特殊的处理方法:如果不想再所有调用链上的方法都加上异常规范,我们可以用一个普通异常类来初始化RuntimeException类,然后在想要处理该异常时捕获RuntimeException异常然后调用getCause方法来获取原始的异常类。

      同C++一样产生的异常必须由调用链上部的某个方法用try catch块进行捕捉,捕捉异常的时候从catch块开始比较,一旦比较到能够匹配的类(基类或完全匹配)则进入该catch块进行处理,而其他catch块将被跳过。不同于CPP的是JAVA提供一个finally块,finally块表示无论是否有匹配的catch块处理异常该块的代码都必将被执行,一般而言finally块用于进行清理。

      JAVA的异常抛出和CPP完全一样,在需要抛出的地方调用类似throw new Exception()语句,然后执行在这里被中断,跳转到相应的catch块执行。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值