用于显示错误的模式

Rya*_*wis 3 ruby

在我的代码中,我通常使用以下设置:

module MyLib
  VERSION = "0.1.1"
  ERROR = [
    "You can either give one arg and a block or two args, not both.",
    "Yadda yadda..."
  ]
end
Run Code Online (Sandbox Code Playgroud)

然后我的代码中的某个地方:

def my_method(*args, &blk)
  raise(ArgumentError, MyLib::ERROR[0]) if (...condition snipped...)
end
Run Code Online (Sandbox Code Playgroud)

有没有更好的方法来定义错误消息?

Mic*_*ohl 7

您可以定义自己的异常类:

module MyLib
  class FooError < ArgumentError
    def to_s
      "You can either give one arg and a block or two args, not both.",
    end
  end
end
Run Code Online (Sandbox Code Playgroud)

现在,如果你举起它:

raise MyLib::FooError
MyLib::FooError: You can either give one arg and a block or two args, not both.
    from (irb):46
Run Code Online (Sandbox Code Playgroud)

如果你想处理它:

rescue MyLib::FooError
Run Code Online (Sandbox Code Playgroud)