2017年7月26日 星期三

Ruby exceptions 進階

backtrace

error.backtrace

可以看出是在哪裡報錯



如果 rescue 後再 raise 還可以看出是上一個 error 是什麼

def fail_and_reraise
  raise NoMethodError
rescue
  raise RuntimeError
end

begin
  fail_and_reraise
rescue => e
  puts "#{ e } caused by #{ e.cause }"
end”

Excerpt From: Starr Horne. “Mastering Ruby Exceptions.” iBooks.


TracePoint

可以做成 log 系統的好東西,自動 catch 每個 error 並記錄
http://ruby-doc.org/core-2.2.0/TracePoint.html


沒有留言:

張貼留言