programming ruby 中
raise ArgumentError,"Name too big",caller 上述这个例子从栈回溯信息中删除当前函数,这在程序库模块中十分有用。可以更进一步:下面的代码通过只将调用栈的子集传递给新异常,从而达到从栈回溯信息中删除两个函数的目的 raise ArgumentError,"Name too big",caller[1..-1]
想问下,从栈回溯信息中删除当前函数,在程序库模块中有什么用啊
作用是方便使用者找到真正出错的地方
这个作用我知道,我意思使用了 caller 都把异常点和调用他的方法在栈回溯中删掉了,这样做的目的是什么
#2 楼 @p0p3 例如标准库的测试模块的 assert 就是要修改 caller 的,assert 不对就会扔出 AssertionError, 但显示的栈里就不没必要把 assert 方法包括进来
https://github.com/ruby/ruby/blob/trunk/lib/test/unit/assertions.rb