错误处理技术
来源:互联网 发布:中国医药化工网数据库 编辑:程序博客网 时间:2024/06/04 00:56
断言可以用于处理代码中不应发生的错误。那又改如何处理那些预料中可能要发生的错误呢?
- 返回中立值。异常发生时继续执行操作并简单地返回一个没有危害的数值。比如,数值可以返回 0,字符串操作可以返回空字串,指针操作可以返回一个空指针,等等。
- 换用下一个正确的数据。如果在读取数据库记录并发现其中一条记录已经损坏时,你可以继续下去直到又找到一条正确的记录为止。比如读取体温计数据。
- 返回与前次相同的数据。
- 换用最接近的合法值。
- 把警告信息记录到日志文件中。在检测到错误数据的时候,可以选择在日志文件中记录一条警告信息,然后继续执行。这种方法可以同其他的错误处理技术结合使用。如果你用到了日志文件,要考虑是否能安全地公开它,或是否需要对其进行加密或施加其他方式的保护。
- 返回一个错误码。你可以决定只让系统的某些部分处理错误,其他部分则不在本地(局部)处理错误,而只是简单地报告说有错误发生,并信任调用链上游的某个字程序会处理该错误。你可以:1. 设置一个状态变量的值; 2. 用状态值作为函数的返回值; 3. 用语言内建的异常机制抛出一个异常;
- 调用错误处理子程序或对象。把所有的错误处理都集中在一个全局的错误处理子程序或对象中。优点在于能把错误处理的职责集中到一起,从而让调试工作更为简单。而代价则是整个程序都要知道这个集中点并与之紧密耦合。
- 当错误发生时显示出错消息。可以把错误处理的开销削减到最少,然而会增加不安全因素,错误信息有可能会被攻击者利用。
- 用最妥当的方式在局部处理错误。这种方法给予每个程序员很大的灵活度,但也带来显著的风险,及系统的整体性能将无法满足对其正确性或可靠性的需求。根据开发人员最终用以处理特定错误的方法不同,这样做也有可能烤制与用户界面相关的代码散步到整个系统中,从而又使程序面临那些鱼显示出错误消息相关的问题。
- 关闭程序。这一方法适用于人身安全攸关的应用程序。
正确性与健壮性
正确性意味着永远不返回不准确的结果,哪怕不返回也比返回不准确的结果好。然而,健壮性则意味着要不断尝试采取某些措施,以保证软件可以持续地运转下去,哪怕有时会做出一些不够准确的结果。
错误处理最恰当的方式要根据出现错误的软件的类别而定。有时更侧重于正确性,而有时更侧重于健壮性。
人身安全攸关的软件往往更倾向于正确性而非健壮性,消费类软件往往更注重健壮性。
高层次设计对错误处理方式的影响
既然有这么多的选择,你就必须注意到,应该在整个程序里采用一致的方式处理异常。对错误进行处理的方式会直接关系到软件是否能满足在正确性,健壮性和其它非功能性指标的要求。确定一种处理方法,是架构层次的设计决策,需要在那里的某个层次上解决。
隔离程序,使之包容由错误造成的损害
以防御式编程为目的而进行隔离的一种方法,是把某些接口选定为 “安全” 区域的边界。对穿越安全区域边界的数据进行合法性校验,并当数据非法时做出敏锐的反应。
数据由图形用户界面,命令行界面,实时数据界面,外部文件,其他外部对象引进,假设这些数据是肮脏且不可信的。由数据验证类1,数据验证类2,数据验证类3...负责清理数据,它们构成了隔栏。再内部类1,内部类2,内部类3...可以假定数据都是干净且可信的,处理这些数据而无须再担负检查错误数据的职责。
也同样可以在类的层次采用这种方法。类的公用方法可以假定数据是不安全的,它们要负责检查数据并进行清理。一旦类的公用方法接受了数据。那么类的私用方法就可以假定数据都是安全的了。
阅读全文
0 0
- 错误处理技术
- Working Practice-错误处理技术
- Ajax错误处理机制技术探讨
- PB数据窗口错误处理技术
- VC错误处理技术学习:断言(ASSERT)
- VC错误处理技术学习:断言(ASSERT)
- VC错误处理技术学习(1):断言
- VC 调试技术与异常(错误)处理
- VC 调试技术与异常(错误)处理
- Ajax技术基础__Ajax的错误处理机制探讨
- [delphi技术] 关于sharemem造成dll错误的处理办法
- PHP中关于图片处理技术----错误的解决方案
- 《代码大全》之错误处理技术(Error-Handling Techniques)
- day04错误处理、环境表、内存管理技术
- 错误处理
- 错误处理
- 错误处理
- 处理错误
- springboot入门
- 选择排序
- SDL2.0 多线程使用信号量
- Java 中的一种更轻松的函数式编程途径
- 工具网站
- 错误处理技术
- ReactNative fetch 网络请求
- 关于生成POS端sqlLiteDB文件 实现全量同步
- cvs
- WebSocket 和socket、HTTP的区别和联系
- Java 根据Properties读写Properties配置文件
- 汇编-将数据区的字符串逆序输出
- Nginx 反向代理,负载均衡,动静分离配置
- 操作集合的工具类Collections