要让 Ruby 打印完整的回溯而不是截断的,可以通过以下方法:
caller
方法获取完整的回溯信息。begin
# 你的代码
rescue => e
puts "捕获到异常:#{e.message}"
puts "回溯信息:"
puts e.backtrace.join("\n")
end
set_trace_func
方法,在程序运行时监听异常,并打印完整的回溯信息。set_trace_func proc { |event, file, line, id, binding, classname|
if event == 'raise'
puts "捕获到异常:#{id}"
puts "回溯信息:"
puts caller.join("\n")
end
}
abort
方法,在程序出现异常时终止程序运行,并打印完整的回溯信息。abort "程序出现异常" if $!.backtrace
trace
方法,在程序运行时输出每一行代码的执行情况,并打印完整的回溯信息。set_trace_func proc { |event, file, line, id, binding, classname|
if event == 'line'
puts "#{file}:#{line}"
elsif event == 'raise'
puts "捕获到异常:#{id}"
puts "回溯信息:"
puts caller.join("\n")
end
}
以上方法可以帮助你获取完整的回溯信息,便于调试和定位问题。
领取专属 10元无门槛券
手把手带您无忧上云