在`raise`语句中将参数传递给`caller`语句

时间:2015-12-19 12:57:48

标签: ruby exception-handling raise

我无法关注caller在这些异常提升声明中的作用。

raise InterfaceException , "Error", caller

raise ArgumentError, " Error", caller[1..-1]

我知道Object#caller设置并将堆栈跟踪发送到层次结构中的上层。方法1..-1的参数caller的解释是什么?

1 个答案:

答案 0 :(得分:2)

如您所述,caller返回当前堆栈跟踪(不包括当前方法)。 caller[1..-1]返回stacktrace,减去第一个条目。

在某些情况下可能会有用。例如,您设置了一个params验证处理程序(或其他),它可以引发。但是您不希望在验证处理程序中看到错误。你想要调用它的行。