当前位置: 首页 > news >正文

多种语言网站珠海建站网站模板

多种语言网站,珠海建站网站模板,青岛手工活外发加工网,四川住房建设和城乡建设厅新网站当对象抛出异常之后#xff0c;通常我们期望这个对象仍然保持在一种定义良好的可用状态之中#xff0c;即使失败是发生在执行某个操作的过程中间。对于受检的异常而言#xff0c;这尤为重要#xff0c;因为调用者期望能从这种异常中进行恢复。一般而言#xff0c;失败的方…当对象抛出异常之后通常我们期望这个对象仍然保持在一种定义良好的可用状态之中即使失败是发生在执行某个操作的过程中间。对于受检的异常而言这尤为重要因为调用者期望能从这种异常中进行恢复。一般而言失败的方法调用应该使对象保持在被调用之前的状态 。具有这种属性的方法被称为具有失败的原子性failure atomic。 有几种途径可以实现这种效果。最简单的办法莫过于设计一个不可变的对象第17项。如果对象是不可变的失败原子性就是免费的free【保持失败的原子性不需要任何成本】。如果一个操作失败了它可能会阻止创建新的对象但是永远也不会使已有的对象保持在不一致的状态之中因为当每个对象被创建之后它就处于一致的状态之中以后也不会再发生变化。 对于在可变对象上执行操作的方法实现失败原子性最常见的办法是在执行操作之前检查参数的有效性第49项。这可以使得在对象的状态被修改之前先抛出合适的异常。例如考虑第7项中的Stack.pop方法 public Object pop() {if (size 0)throw new EmptyStackException();Object result elements[--size];elements[size] null; // 清除过期引用return result; }如果取消对初始大小size的检查当这个方法企图从一个空栈中弹出元素时它仍然会抛出异常。然而这将会导致字段size保持在不一致的状态负数之中从而导致将来对该对象的任何方法调用都会失败。此外pop方法抛出的ArrayIndexOutOfBoundsException对抽象是不合适的the ArrayIndexOutOfBoundsException thrown by the pop method would be inappropriate to the abstraction第73项。 一种类似的获得失败原子性的办法是对计算过程进行排序使得任何可能会失败的计算都在对象被修改之前发生。如果对参数的检查只有在执行了部分计算之后才能进行这种办法实际上就是上一中办法的自然扩展。例如考虑TreeMap的情形它的元素被按照某种特定的顺序做了排序。为了向TreeMap中添加元素该元素的类型就必须是可以利用TreeMap的排序准则与其他元素进行比较的。如果企图增加类型不正确的元素在tree【TreeMap内部的数据结构】以任何方式修改之前自然会导致ClassCastException异常。 实现故障原子性的第三种方法是对对象的临时副本执行操作并在操作完成后用临时副本替换对象的内容。当数据已经存储在临时数据结构中时可以更快地执行计算使用这种方法就件很自然地事。例如一些排序函数在排序之前将其输入列表复制到数组中以便降低在排序内部循环中访问元素的成本。这样做是为了提高性能同时也获得了额外的好处它确保在排序失败时输入的列表不会受到影响。 最后一种获得失败原子性的办法远远没有那么常用做法是编写一段恢复代码recovery code由它来拦截操作过程中发生的失败以及使对象回滚到操作开始之前的状态。这种办法主要用于永久性的基于磁盘的disk-based数据结构。 虽然一般情况下都希望实现失败的原子性但并非总是可以做到。例如如果两个线程企图在没有适当的同步机制的情况下并发地修改同一个对象这个对象就有可能被留在不一致的状态之中。因此在捕获了ConcurrentModificationException异常之后再假设对象仍然是可用的这就是不正确的。错误是不可恢复的因此在抛出AssertionError时你甚至无需去尝试保留失败原子性。 即使在可以实现失败原子性的场合它也并不总是我们所期望的。对于某些操作它会显著地增加开销或者复杂性。但一旦意识到这个问题实现失败原子性往往轻松自如。 一般而言作为方法规范的一部分产生的任何异常都应该让对象保持在该方法调用之前的状态。如果违反这条规则API文档就应该清楚地指明对象将会处于什么样的状态。遗憾的是大量现有的API文档都未能做到这一点。 所有文章无条件开放顺手点个赞不为过吧
http://www.hkea.cn/news/14325624/

相关文章:

  • 怎样做才能提升自己的网站wordpress修改没
  • 建设局哪个网站查证seo网站优化优化排名
  • 站长之家查询域名建设环境竣工验收网站
  • 自己如何做家政网站一个完整的网站推广方案
  • wordpress动漫网站出口跨境电子商务
  • 用百度云做网站wordpress分类首页调用
  • 婚庆网站策划烘焙食品网站建设需求分析
  • 自己的网站可以做淘客吗网站建设中颜色的感染力
  • 株洲网站建设推广报价肯德基网站建设
  • 推荐黄石网站建设wordpress前台发表
  • 域名和空间都有了怎么做网站律师事务所网站案例
  • 百度蜘蛛网站排名wordpress 更新服务 搜狗
  • 低成本做网站 白之家聊天软件开发用什么技术
  • 什么网站可以做PS 写论文兼职免费搭建购物网站
  • 荆门做网站的公司什么网站可以卖自己做的东西
  • 做做网站2023淘宝网官方网站购物商城
  • 建设学校网站方案宁夏省建设厅网站
  • 泰兴市淘宝网站建设网易云服务器
  • 做网站空间账号seo是什么
  • 管理咨询网站自助式网站制作
  • 企业网站管理系统c企业自助建站系统
  • 做网站的过程中有哪些问题做动图为所欲为的网站
  • 绿色风格 网站医社保增减员在什么网站做
  • 网站模板加后台网页设计的要点有哪些
  • 深圳网站改版公司一个域名权重3如果做网站的话权重会降为0吗
  • python做网站方便吗上海企业公示
  • 南昌网站建设志博编一个公司网址
  • 中国旅游网站模板百度hao123
  • 最专业微网站建设价格西安网站建设电话咨询
  • 洛阳做网站的公司皮肤科在线咨询医生免费咨询