Ecco un vero e proprio esempio veloce:Rubino Rescue Per Visualizzare Backtrace completa
puts File.join(nil, "hello")
output sarebbe
test.rb:4:in 'join': can't convert nil into String (TypeError)
from test.rb:4
Ma quando faccio questo:
begin
puts File.join(nil, "hello")
rescue => exception
puts exception.backtrace
end
Questa uscita volontà
test.rb:4:in 'join'
test.rb:4
Ora come faccio a catturare l'intero backtrace, inclusa la parte "non posso convertire nil in String (TypeError)"?
Vessels @Sarah: Nel mio codice specifico, questo frammento di codice:
puts "=============================="
puts error.message
puts "=============================="
puts error.inspect
puts "=============================="
puts error.backtrace
puts "=============================="
restituisce
==============================
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
==============================
In seguito alla modifica, sembra che il salvataggio stia rilevando un'eccezione SystemExit (sollevata quando si chiama exit) anziché l'errore TypeError dal tentativo di unirsi a nil con una stringa. Cosa c'è sulla riga multi.rb 234? – mikej