软件构造(五) 异常

Checked异常、Unchecked异常:
编译器可帮助检查你的程序是否已抛出或处理了可能的异常(checked异常)必须捕获并指定错误处理器handler,否则编译无法通过;类似于编程语言中的static type checking.

Errors and Runtime Exceptions(unchecked异常)不需要在编译的时候用try…catch等机制处理.

Checked异常的处理机制:声明、抛出、捕获、处理、清理现场、释放资源等:
Declaring exceptions (throws) 声明“本方法可能会发生XX异常”
Throwing an exception (throw) 抛出XX异常
Catching an exception (try, catch, finally) 捕获并处理XX异常,不管程序是否碰到异常,finally都会被执行
Unchecked异常也可以使用throws声明或try/catch进行捕获,但大多数时候是不需要的,也不应该这么做——掩耳盗铃,对发现的编程错误充耳不闻 当要决定是采用checked exception还是unchecked exception的时候,问一个问题:“如果这种异常一旦抛出,client会做怎样的补救?” 如果客户端可以通过其他的方法恢复异常,那么采用checked exception;
如果客户端对出现的这种异常无能为力,那么采用unchecked exception;
异常出现的时候,要做一些试图恢复它的动作而不要仅仅的打印它的信息。错误可预料,但无法预防,但可以有手段从中恢复,此时使用checked exception。如果做不到这一点,则使用unchecked exception.
在这里插入图片描述
自定义异常类
如果子类型中override了父类型中的函数,那么子类型中方法抛出的异常不能比父类型抛出的异常类型更宽泛。子类型方法可以抛出更具体的异常,也可以不抛出任何异常。如果父类型的方法未抛出异常,那么子类型的方法也不能抛出异常。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值