我的 Rubocop 不喜欢 => e in Ruby 错误处理。 => e 不是标准的吗?

My Rubocop doesn't like => e in Ruby error handling. Isn't => e standard?

Rubocop 似乎不喜欢我处理错误的方式。我该怎么办?

Lint/UselessAssignment: Useless assignment to variable - e.
    rescue *exceptions_list => e

针对下面的一段代码:

  def get_request(url_args = {})
    http_connection(url_builder(url_args[:url], url_args[:page]))
  rescue *exceptions_list => e
    raise "#{e.message}"
  end

你看到的*exceptions_list是在私有方法中定义的:

  private

    def exceptions_list
      [
        Net::HTTPBadResponse,
        Net::HTTPHeaderSyntaxError,
        Net::ProtocolError,
        Errno::ECONNRESET,
        Errno::EINVAL,
        Timeout::Error,
        EOFError,
        SocketError
      ]
    end

避免救援线过长。

问题: => e 是错误处理的标准,不是吗?我该怎么办?

非常感谢您! =)

你的例子没有给出来自 rubocop 的 Lint/UselessAssignment,至少在版本 0.55.0

中没有

UselessAssignment 通常来自这样的东西:

def do_things
  ..
rescue *exception_list => e # Useless assignment, e is never used in the block below.
  puts "it failed :("
end

要解决此问题,如果您未对任何内容使用引发的异常,则可以删除分配:

def do_things
  ..
rescue *exception_list
  puts "it failed and i don't care why :D"
end