【问题标题】:How to write long exception statements avoiding rubocop line length error如何编写长异常语句避免 rubocop 行长度错误
【发布时间】:2015-12-28 07:33:37
【问题描述】:

我正在使用超过 120 长度的 rescue 语句,因此 Rubocop 显示违规。最好的写法应该是什么?

原文:

 rescue ActiveResource::ResourceNotFound, ActiveResource::BadRequest, ActiveResource::TimeoutError, ArgumentError => e

修改后的声明:

 rescue ActiveResource::ResourceNotFound, ActiveResource::BadRequest, ActiveResource::TimeoutError,
    ArgumentError => e

但它看起来不正确,也不可读。最好的写法是什么?

【问题讨论】:

  • 为什么看起来不对?
  • 从某种意义上说,它本身是不可读的。还有其他更好的写作方式吗?
  • 我不明白你为什么觉得它不可读。
  • 您可以禁用 rubocop 检查,方法是在代码和同一行之前添加行 # rubocop:disable Metrics/LineLength 但在之后添加“启用”
  • @sawa:在这个救援命令之后有很多代码行,所以这个argument => e 有点混乱在下一行。有些人可能会将其误解为另一行代码。

标签: ruby coding-style


【解决方案1】:

当我有很长的错误需要挽救时,我通常会这样处理:

class MyClass < Object
  HandleTheseErrors = [
    ActiveResource::ResourceNotFound,
    ActiveResource::BadRequest,
    ActiveResource::TimeoutError,
    ArgumentError
  ]

  def do_something
    begin
      # do something error prone
    rescue *HandleTheseErrors => e
      puts e
    end
  end
end

*HandleTheseErrors 表示,将HandleTheseErrors 数组的每个元素作为参数传递给救援方法。

【讨论】:

  • 这很有趣!我还不知道该怎么想,所以我坚持“有趣”。 :-)
  • 这是一个不错的解决方案。但我不能将它添加到我的代码中,因为那时会有很多变化。 :'(
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-02-12
  • 2020-01-08
  • 2016-09-10
相关资源
最近更新 更多