面向正确性与健壮性的软件构造 {ignore=true}
文章目录
1. 什么是正确性与健壮性
1.1 健壮性
健壮性是指软件能够正确地运行,而不是崩溃或产生不正确的结果。
面向健壮性的编程我们应该处理未期望的行为和错误终止,并且即使终止执行,也要准确/无歧义的向用户展示全面的错误信息。(这有助于debug)
为了考虑充足以满足健壮性,我们总是要假定用户包含恶意,想要破坏程序,假定我们的代码会失败。
1.2 正确性
正确性是指软件能够按照预期的方式运行,而不是产生不正确的结果。
只要按照specification的要求实现,就能保证一定的正确性。
正确性倾向于直接报错(error),健壮性则倾向于容错(fault-tolerant)
1.3 可靠性
可靠性 = 健壮性 + 正确性
2. 错误和异常
- 内部错误:程序员通常无能为力,一旦发生,想办法让程序优雅的结束。
- 异常:你自己程序导致的问题,可以捕获、可以处理。
2.1 处理异常
异常是程序执行中的非正常事件,程序无法再按预想的流程执行。
对于Unchecked exception(Error + RuntimeException), 可以不处理,这是可以通过编译的,但会导致执行失败。
对于Checked exception, 必须处理,否则无法通过编译。
有五个处理异常的关键字分别是:
- try: 用于包含可能会抛出异常的代码块
- catch: 用于捕获异常
- finally: 用于包含一定会执行的代码块
- throw: 用于抛出异常
- throws: 用于声明可能抛出的异常
3. 断言(Assertion)
讲断言在开发阶段嵌入,去检验某些假设是否成立,若成立,则表示程序运行正常,否则表明存在错误。
在应用阶段要禁用所有断言!!!
4. 防御式编程
防御式编程是一种编程风格,它的目的是使程序更加健壮,更加容错。