如何在 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 控制台中,这也是编写代码并查看会发生什么(特别是如果您可以通过测试重现适当的行为)的好选择。您可能会在那里找到更快的反馈循环。
您不想为这些添加单独的例外。因为 ArgumentError 和 NameError 在 StandardError.
下
这是异常层次结构。
- 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)
是否可以在 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 控制台中,这也是编写代码并查看会发生什么(特别是如果您可以通过测试重现适当的行为)的好选择。您可能会在那里找到更快的反馈循环。
您不想为这些添加单独的例外。因为 ArgumentError 和 NameError 在 StandardError.
下这是异常层次结构。
- 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)