加入我们,或者,欢迎回来。
您需要 登录 才可以下载或查看,没有帐号?注册会员
x
本帖最后由 nokaiwai 于 2013-7-13 15:11 编辑
隨便舉一個例子好了
例如運行以下腳本時
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")
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 |