我有一个例外e
,我想将其转换为与标准红宝石输出完全相同的字符串{ {1}}异常未被捕获时。
初始代码给出了堆栈跟踪的错误顺序,并且缩进不正确。
我不想编写自己的代码,而是希望看到一些“oneliner”。你是怎么做到的?
答案 0 :(得分:17)
这将是相同的。
puts "#{$@.first}: #{$!.message} (#{$!.class})", $@.drop(1).map{|s| "\t#{s}"}
或者,使用e
:
puts "#{e.backtrace.first}: #{e.message} (#{e.class})", e.backtrace.drop(1).map{|s| "\t#{s}"}
答案 1 :(得分:0)
如果你想记录为单个字符串,而不仅仅是输出,你可以这样做:
puts "#{e.backtrace.first}: #{e.message} (#{e.class})\n\t" + e.backtrace.join("\n\t")