Hier ist ein echtes kleines Beispiel:Ruby-Rettung Ganzbacktrace So zeigen
puts File.join(nil, "hello")
ausgeben würde
test.rb:4:in 'join': can't convert nil into String (TypeError)
from test.rb:4
Aber wenn ich dies tun:
begin
puts File.join(nil, "hello")
rescue => exception
puts exception.backtrace
end
Dies wird Ausgang
test.rb:4:in 'join'
test.rb:4
Wie erfasse ich nun die vollständige Backtrace, einschließlich der "Kann nicht Nil in String (TypeError)" Teil?
@Sarah Vessels: In meinem speziellen Code, dieser Ausschnitt:
puts "=============================="
puts error.message
puts "=============================="
puts error.inspect
puts "=============================="
puts error.backtrace
puts "=============================="
kehrt
==============================
exit
==============================
#<SystemExit: exit>
==============================
/usr/lib/ruby/1.8/glib2.rb:37:in `exit'
/usr/lib/ruby/1.8/glib2.rb:37:in `exit_application'
multi.rb:234:in `main'
multi.rb:347
==============================
Nach Ihrer Bearbeitung sieht es so aus, als ob Ihre Rettung eine SystemExit-Ausnahme (ausgelöst beim Aufruf von exit) statt des TypeError beim Versuch, nil mit einer Zeichenfolge beizutreten, abfängt. Was ist in der multi.rb Zeile 234? – mikej