异常处理与程序的鲁棒性


前言

这里应该是本次课程的最后一次博客,主要是回顾一下日常开发中所遇到的工程上的异常处理问题与相关的程序鲁棒性与正确性。在阅读这篇博客之前,请确保我们对异常处理有了基本的了解。

一、异常处理与程序健壮性

在第二章我们已经学习过关于健壮性的内容,就是关于软件测试和测试优先的编程那一块内容,这一块内容我们学习了如何写spec。
下面我们说的是对上面的补充与发展:
正确性程序按照spec加以执行的能力,是最为重要的质量指标。正确性要保证永远不要返回错误的结果。
鲁棒性系统在不正常输入情况下仍然能保持正常的程度,需要做到处理意外的输入和错误,即使终止也要返回全面的错误信息。
正确性倾向于直接报错,而健壮性倾向于容错。
注意,可靠性等于正确性+健壮性。
对于前置条件,我们一般用异常测试处理;对于后置条件,我们一般使用assert处理。另外,输出的异常需要在后置条件中显式地写出,后置条件如果失去这个异常,则会变强,因为程序员需要在程序中处理这个异常,工作量增大。
在这里插入图片描述
如果程序输出了异常,则他的子类需要抛出子类异常或者不抛。另外,runtime异常不需要在spec中显式写出,当然error也不需要,但是这个考的比较少,不做细说。
想要声明一个checked异常,异常的处理有三种方法,即:在类层面声明throws,在方法内部用throw抛出,或者使用try,catch,finally组合拳处理。
如果这里处理不了,就得往上传。

二、关于断言

断言主要用于开发阶段,使之fail fast,避免引入和帮助发现bug,实际开发时需要关掉避免降低性能。断言非常影响程序性能。
在这里插入图片描述
在这里插入图片描述
在这里可以设置assert的enable和disable。
如果说异常用来处理可以预料到的不正常情况,那么断言就是来处理绝对不应该发生的情况。
最后就是注意要随时防御式拷贝!

总结

这是刷题以来对异常的考点的一些总结,希望考试的时候对异常处理有熟练的掌握。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值