软件构造(五)

异常处理
异常:程序执行中的非正常事件,程序无法再按预想的流程执行,将错误信息传递给上层调用者,并报告“案发现场”的信息

异常的种类:
1.运行时异常:由程序员在代码里处理不当造成
2.其他异常:由外部原因造成

Check/Uncheck Exceptions
在这里插入图片描述
异常处理:必须在方法的spec中明确写清本方法会抛出的所有checked exception, 以便于调用该方法的client加以处理

子类型异常处理规范:(LSP)
1.如果子类型中override了父类型中的函数,那么子类型中方法抛出的异常不能比父类型抛出的异常类型更宽泛
2.子类型方法可以抛出更具体的异常,也可以不抛出任何异常
3.如果父类型的方法未抛出异常,那么子类型的方法也不能抛出异常。

断言Assertions
断言:在开发阶段的代码中嵌入,检验某些“假设”是否成立。若成立,表明程序运行正常,否则表明存在错误。出现AssertionError,意味着内部某些假设被违反了
断言可检测情况:内部不变量、表示不变量、控制流不变量、方法的前置条件、方法的后置条件
断言用于绝不应该发生的情况,而异常处理用于可预料到的非正常情况。

提高健壮性和正确性
1.健壮性安全性编程。(断言,防御性编程,代码审查,形式验证)
2.发现failure的症状(信息转储,栈追踪,执行日志,测试)
3.找出潜在fault(debug,bug定位)
4.修复errors

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值