软件构造第十二章总结——正确性与健壮性

健壮性与正确性

  • 健壮性:不正确输入仍有正常的表现
  • 正确性:完全按照SPEC执行,不一致就直接报错。

衡量健壮性

  • MTBF:平均失效间隔时间。
  • 而正确性:MTTF,到失败时的时间。

Throwable

  • Throwable包括Error以及Exception。
  • Exception包括RuntimeException以及NonRuntimeException

RuntimeException

  • 此异常是程序员出错了。自己写的源代码问题。
  • 非运行时异常,是不可控因素导致的,在代码中验证也难以避免。
  • Unchecked异常

CheckedException

  • 不可控,外部因素,只能catch throw

异常与SPEC

  • 异常也需要在SPEC中定义,是post-condition的一部分。
  • 不能抛出error以及unchecked exception
  • 子类只能抛出父类更具体的异常,或者根本不跑出。
  • 抛出异常后,控制流不会再回来了。

定义异常

在这里插入图片描述

catch

  • 异常发生后,如果找不到处理器,就直接终止程序,在控制台打印stack trace。
  • 在catch中也可以抛出异常,这么做是为了改变异常类型,进而使得client获得更详细的错误信息。

finally

  • 处理异常发生后的资源
  • 不管是否发生异常,final都要执行。
  • 下面这个return false,就和push esp一样无趣
    在这里插入图片描述

stack trace

  • 遇到异常后,JVM沿着栈,逐层压出栈,依次寻找是否有catch,如果都没有,则终端打印错误,控制不会再回去了,类似set jump

assert

  • 对于pubic的precondition使用异常处理,post以及public的所有均使用assert
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值