关于12章面向正确性与健壮性的软件构造的理解

一、健壮性和正确性

健壮性:系统在不正常输入或不正常外部环境下仍能够表现正常的程度

健壮性是针对用户的输入的,通过用户的输入是否合法抛出异常,一般针对前置条件

正确性:程序按照spec加以执行的能力,是最重要 的质量指标

正确性是针对程序内部的结果的,用断言检查结果的正确性,一般针对后置条件

二、exception异常:

程序运行期间可以抛出错误error和异常exception,error一般是程序员无能为力的不可处理的,异常分为两类,一种是runtimeexception及其子类的unchecked exception,另一种是其他的checked exception。

Unchecked exceptions不需要在编译时使用try…catch等机制处理。可以不处理,编译没问题,但执行时出现就导致程序失败,代表程序中有潜在的bug。类似于编程语言中的动态类型检查。

Checked exceptions必须捕获和抛出,否则程序将无法编译(编译器检查您是否为所有Checked exceptions提供了异常处理程序)。类似于编程语言中的静态类型检查。

异常处理:有五种关键字:

try套在能抛出异常的代码外部捕获异常,

catch处理捕获的异常也可以catch里再抛出异常,

finally无论是否发生异常捕获到什么异常再最后都要执行内部的代码,

throws声明可能会抛出的异常或异常的父类,

throw抛出异常

注意:无论是什么类型的异常,程序运行都会在抛出异常的位置结束,并进入catch和finally当中,

如果catch当中没有printStackTrace();甚至下方的栏里不会出现红字。

三、断言assert

断言:在开发阶段的代码中嵌入,检验某些“假设”是否成立。若成立,表明程序运行正常,否则表明存在错误

每个断言都包含一个您认为在程序执行时为真的布尔表达式。如果断言不为真,则JVM 会抛出一个断言异常,这意味着代码中有错误,需要被修复;如果断言为真,则表示程序员代码编写没问题,可以继续下一步操作。
 

assert影响性能代价很大,一般 用于开发阶段的调试

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值