Defensive programming -- Code complete reading notes(8)
子程序不应该因传入错误的数据而被破坏,哪怕是由其它子程序产生的错误数据。
1、检查所有来源于外部的数据
2、检查子程序所有输入参数的值
3、决定如何处理错误的输入数据
使用断言
1、用错误处理代码来处理预期会发生的错误,使用断言来处理绝不会发生的状况
2、避免把需要执行的代码放在断言中
3、用断言来注释并验证前条件和后条作
4、应该先使用断言再处理错误
错误处理技术
1、返回中立值
2、换用下一个正确的数据
3、返回与前次相同的数据
4、换用最接近的合法值
5、记日志
6、返回一个错误码
7、调用错误处理子程序或对象
8、显示出错消息
9、在局部处理数据
10、关闭程序
错误处理方式有时更侧重于正确性,有时则更侧重于健壮性
应该在恰当的抽象层次抛出异常,确保异常的抽象层次与子程序接口的抽象层次一致,不应把更低层的异常传递给其调用方,暴露了一些实现细节。