新手问题 再请问个 caller 的问题

p0p3 · July 02, 2013 · Last by night_song replied at July 04, 2013 · 2670 hits

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

You need to Sign in before reply, if you don't have an account, please Sign up first.