zoukankan      html  css  js  c++  java
  • [Chatter] 错误处理的安全保证等级

    在撰写程序的时候,错误处理是一件很重要的事情。在「C++编程规范」这本书的第71个条款里,依照不同的错误处理结果,定义出三种「安全保证」等级: No-fail保证、Strong保证、Basic保证。这三种安全保证等级以执行方法遇到错误并且处理之后,是否会影响到数据或状态来做等级区分。开发人员在撰写每个方法之前,先决定方法的错误处理是属于哪个等级,可以减少思考的范围、避免一些不必要的过度设计。

    No-fail保证

    所谓的「No-fail保证」是说:执行方法一定成功、不会发生异常。在系统里有些方法,必须设计为提供No-fail保证等级,例如:解构子、资源释放、Log纪录…等等。这些方法通常会在错误处理时使用,如果错误处理时又会出错,那应该就是开发人员的灾难了。

    以开发人员的角度来说,会希望所有方法都是No-fail保证等级。不过很残酷的现实是,大多数的方法都会发生异常、需要错误处理。

    Strong保证

    所谓的「Strong保证」是说:执行方法不一定成功、但异常处理之后状态或数据不变。系统里最常见设计为提供Strong保证等级的方法,就是使用「交易功能」的数据库操作方法。当执行数据库操作方法发生异常的时候,系统会Rollback数据库,让数据库维持呼叫方法之前的状态。

    以开发人员的角度来说,应该要尽量设计方法到达Strong保证等级。方法执行的结果,要不就是正常执行完毕、要不就是发生异常可是数据或状态不变。

    Basic保证

    所谓的「Basic保证」是说:执行方法不一定成功、但异常处理之后的状态或数据是在「可接受范围」里。这边的可接受范围是指数据或状态的正确性,例如说:一台轿车最多只能坐五个人,结果执行方法发生异常后,在数据库里留下了六个人的纪录,这就是数据不在可接受范围里。

    以开发人员的角度来说,Basic保证等级是方法必须满足的最低等级。当方法执行发生异常,可是异常处理之后的状态或数据不在可接受范围里,这样的执行结果应该归类为程序的Bug,必须要重新设计。因为方法执行发生异常之后,如果数据或状态无法保证在可接受范围里,那只会引发蝴蝶效应产生更多的错误。


  • 相关阅读:
    视差插件parallarx
    经典幻灯片插件Swiper
    经典全屏滚动插件fullPage.js
    Dialog插件artDialog
    html5 canvas 做的一个时钟效果
    CSS3 Transitions, Transforms和Animation使用简介与应用展示
    微软官方下载地址
    Windows 7 下配置IIS,并且局域网内可访问(转载)
    C# 使用HttpWebRequest 实现文件的上传
    小图标网站
  • 原文地址:https://www.cnblogs.com/clark159/p/2570734.html
Copyright © 2011-2022 走看看