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

Passing arguments to `caller` statement in `raise` statement

我无法理解 caller 在这些异常引发语句中所做的事情。

raise InterfaceException , "Error", caller

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

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

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

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