如何在 rails 上合并 ruby 中的多个异常?

how to combine rescue multiple exceptions in ruby on rails?

是否可以在 rails 上的 ruby 中将多个 rescue 语句合并为一个。

begin
   //do something 
  rescue ArgumentError => e
      e.message
  rescue NameError => e
      e.message
  rescue StandardError => e
      e.message
end

结合如下所示

rescue ArgumentError, NameError, StandardError => e
      e.message

那行得通。您需要考虑您希望此代码将来如何更改以及是否更改,以及此格式是否有助于更改。

即使仅在 rails 控制台中,这也是编写代码并查看会发生什么(特别是如果您可以通过测试重现适当的行为)的好选择。您可能会在那里找到更快的反馈循环。

您不想为这些添加单独的例外。因为 ArgumentErrorNameErrorStandardError.

这是异常层次结构。

- NoMemoryError
- ScriptError
    - LoadError
    - NotImplementedError
    - SyntaxError
- SecurityError
- SignalException
    - Interrupt
- StandardError (default for `rescue`)
    - ArgumentError
        - UncaughtThrowError
    - EncodingError
    - FiberError
    - IOError
        - EOFError
    - IndexError
        - KeyError
        - StopIteration
    - LocalJumpError
    - NameError
        - NoMethodError
    - RangeError
        - FloatDomainError
    - RegexpError
    - RuntimeError (default for `raise`)
    - SystemCallError
        - Errno::*
    - ThreadError
    - TypeError
    - ZeroDivisionError
- SystemExit
- SystemStackError
- fatal (impossible to rescue)