速错

发布日期:2023-08-04 11:00:00   来源 : bal    作者 :乐小管    浏览量 :14
乐小管 bal 发布日期:2023-08-04 11:00:00  
14

2026西湖龙井茶官网DTC发售:茶农直供,政府溯源防伪到农户家 

什么是速错

  速错计算机的一种错误处理模式,程序设计者希望自己的程序能够把隐藏错误尽早暴露出来,及时修复。拼写错误、源数据错误、逻辑错误都需要速错。

速错和相关概念

  程序出现异常,不想让用户看到,会给一个友好的提示,这种做法一般称作“容错”。另一方面,我们希望自己的程序能够把隐藏错误尽早暴露出来,及时修复,这种思路称之为“速错”。拼写错误、源数据错误、逻辑错误都需要速错。当然,容错和速错也并不总是对立的,分清何时应用哪种策略非常重要。

速错的常用方法

使用fetch

  当Hash的key值是已知的情况,比如状态枚举。优先使用fetch可以避免拼写错误带来的意外。举例:

class Event < AR

  STATUS = {

    :open => 1,

    :closed => 0

  }

end

Event.update_all(:status => Event::STATUS[:close], "created_at > '2011-1-1'") # => update status to null

Event.update_all(:status => Event::STATUS.fetch(:close), "created_at >

'2011-1-1'") # => raise KeyError: key not found: :close

  上面例子由于错误拼写,把closed拼成 close,造成了一个Silent failure,而使用fetch方法就会在拼错时直接抛出异常,避免了之后的错误。

使用常量

  除此之外,声明常量也可以带来同样效果,本质是给输入加上了拼写检查。

class Event < AR

  CLOSED = 0

  OPEN = 1

end

Event.update_all(:status => Event::CLOSE, "created_at > '2011-1-1'") # => raise NameError: uni

善用attr method

  attr method调用和上面两个例子一样,也起到了错误检查的作用。我们知道Ruby的实例变量有一个隐藏特性,实例变量不需要定义就可以使用,不会报错。当然,在启动Ruby加 -w 参数是可以warning提示的。

class Event

  def initialze(attrs)

   @closed = attrs[:closed] || true

  end


  def xxx

   if @close

    # some code will not run

   end

  end

end

  如果我们使用attr reader,调用close方法直接就会抛出undefind method异常,让拼写错误尽早现形。

相关条目

  • 容错


上一篇 : 生物电脑
下一篇 : 数字KVM
关于我们
热门推荐
合作伙伴
免责声明:本站部分资讯来源于网络,如有侵权请及时联系客服,我们将尽快处理
支持 反馈 订阅 数据
回到顶部