2012-11-09 49 views
4

我有一個例外e,我想將其改造成一個字符串,它是完全相同作爲對stderr標準紅寶石輸出當例外是未捕獲。如何使用回溯紅寶石例外格式化爲一個字符串

最初的代碼給了我不正確的堆棧跟蹤順序,並且縮進不正確。

我沒有寫自己的代碼,而是想看到一些「oneliner」。你怎麼做到這一點?

回答

12

這將是相同的。

puts "#{[email protected]}: #{$!.message} (#{$!.class})", [email protected](1).map{|s| "\t#{s}"} 

或者,使用e

puts "#{e.backtrace.first}: #{e.message} (#{e.class})", e.backtrace.drop(1).map{|s| "\t#{s}"} 
+0

優秀的內膽,提供了完全相同的輸出。再次感謝:--D – lzap