我无法关注caller
在这些异常提升声明中的作用。
raise InterfaceException , "Error", caller
raise ArgumentError, " Error", caller[1..-1]
我知道Object#caller
设置并将堆栈跟踪发送到层次结构中的上层。方法1..-1
的参数caller
的解释是什么?
答案 0 :(得分:2)
如您所述,caller
返回当前堆栈跟踪(不包括当前方法)。 caller[1..-1]
返回stacktrace,减去第一个条目。
在某些情况下可能会有用。例如,您设置了一个params验证处理程序(或其他),它可以引发。但是您不希望在验证处理程序中看到错误。你想要调用它的行。