将参数传递给 `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 堆栈跟踪,减去它的第一个条目。
在某些情况下可能会有用。例如,您设置了一个参数验证处理程序(或其他),它可以引发。但是您不希望看到错误源自验证处理程序。您需要调用它的行。
我无法理解 caller
在这些异常引发语句中所做的事情。
raise InterfaceException , "Error", caller
raise ArgumentError, " Error", caller[1..-1]
我知道 Object#caller
设置堆栈跟踪并将其发送到层次结构中的上层。方法 caller
的参数 1..-1
的解释是什么?
如您所述,caller
returns 当前堆栈跟踪(不包括当前方法)。 caller[1..-1]
returns 堆栈跟踪,减去它的第一个条目。
在某些情况下可能会有用。例如,您设置了一个参数验证处理程序(或其他),它可以引发。但是您不希望看到错误源自验证处理程序。您需要调用它的行。