2013-04-30 44 views
1

當退出使用raisefail,如何防止從正在顯示的回溯一個Rails應用程序?如何抑制Rails的回溯?

使用back_trace_limit嘗試,但它似乎只爲控制檯工作...?

+0

可能重複的[強制紅寶石隱藏回溯異常](http://stackoverflow.com/questions/5357383/force-ruby-to-hide-backtrace-on-exception) – Nakilon 2016-07-15 15:44:48

+0

這是同樣的問題,但答案是不同的。此外,所引用問題的答案是5歲。在這麼長的時間裏應該有新的更好的方法。我發現,是5歲最答案不再相關,至少在某些領域,如導軌。 – 2016-07-15 17:17:13

+0

哦的確如此。答案是不同的。那麼關閉另一個鏈接到這個呢? – Nakilon 2016-07-16 12:21:06

回答

1

你有超過使用其set_backtrace方法有異常情況返回的回溯總量控制。例如:

def strip_backtrace 
    yield 
rescue => err 
    err.set_backtrace([]) 
    raise err 
end 

begin 
    strip_backtrace do 
    puts 'hello' 
    raise 'ERROR!' 
    end 
rescue => err 
    puts "Error message: #{err.message}" 
    puts "Error backtrace: #{err.backtrace}" 
end 

輸出:

hello 
Error message: ERROR! 
Error backtrace: [] 

這裏的strip_backtrace方法捕獲所有錯誤,設置回溯爲空數組,並重新引發改性異常。