| 
本帖最后由 nokaiwai 于 2013-7-13 15:11 编辑
x
加入我们,或者,欢迎回来。您需要 登录 才可以下载或查看,没有帐号?注册会员  
 隨便舉一個例子好了
 例如運行以下腳本時
 
 
 def add4(num)  unless num.is_a?(Numeric)    p error = ArgumentError.new("...")   #=> #<ArgumentError: ...>    p error.backtrace                    #=> nil  end  begin    num + 4  ensure  p $!                                   #=> #<TypeError: can't convert Fixnum into String>  p $@                                   #=> ["{0000}:7:in '+'", "{0000}:7:in 'add4'", "{0000}:15:in '<main>'", "ruby:in 'eval'"]  p error.set_backtrace($@[2])           #=> ["{0000}:15:in '<main>'"]  raise error                            #=> Script '' line 15: ArgumentError occurred.\n...  endendadd4("a")
def add4(num) 
  unless num.is_a?(Numeric) 
    p error = ArgumentError.new("...")   #=> #<ArgumentError: ...> 
    p error.backtrace                    #=> nil 
  end 
  begin 
    num + 4 
  ensure 
  p $!                                   #=> #<TypeError: can't convert Fixnum into String> 
  p $@                                   #=> ["{0000}:7:in '+'", "{0000}:7:in 'add4'", "{0000}:15:in '<main>'", "ruby:in 'eval'"] 
  p error.set_backtrace($@[2])           #=> ["{0000}:15:in '<main>'"] 
  raise error                            #=> Script '' line 15: ArgumentError occurred.\n... 
  end 
end 
add4("a") 
 請問如何在第4行時獲取需要的 backtrace  ("{0000}:15:in '<main>'") 呢?  謝謝
 
 自己發現答案了
 大概就是加上 rescue => error
 http://www.ruby-doc.org/core-1.9.3/Exception.html
 |