当您调用对象上不存在的方法时,将引发 NoMethodError,即
Object.new.foo
将输出:
NoMethodError: 未定义的方法 `foo' for #
尽管
nil.foo
将输出:
NoMethodError: nil:NilClass 的未定义方法“foo”
我想在引发我自己的异常时复制这种行为,即
foo = Object.new
raise StandardError, "#{foo} triggered an error"
这将输出:
StandardError: #
<Object:0xbf37748>
触发错误
这正是我想要的。
很遗憾
foo = nil
raise StandardError, "#{foo} triggered an error"
将输出
StandardError:触发错误
这可能是因为nil.to_s
is ""
。我如何获得nil:NillClass
输出?