He aquí un verdadero ejemplo rápido:Rubí Rescate en pantalla completa Backtrace
puts File.join(nil, "hello")
salida sería
test.rb:4:in 'join': can't convert nil into String (TypeError)
from test.rb:4
Pero cuando hago esto:
begin
puts File.join(nil, "hello")
rescue => exception
puts exception.backtrace
end
Esta es la salida
test.rb:4:in 'join'
test.rb:4
Ahora, ¿cómo puedo capturar la traza inversa completa, incluida la parte "no se puede convertir nada en String (TypeError)"?
buques @Sarah: En mi código específico, este fragmento:
puts "=============================="
puts error.message
puts "=============================="
puts error.inspect
puts "=============================="
puts error.backtrace
puts "=============================="
devuelve
==============================
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
==============================
Después de su edición, parece que su rescate atrapa una excepción SystemExit (que se produce cuando llama a exit) en lugar de que TypeError intente unirse a nil con String. ¿Qué hay en la línea 234 de multi.rb? – mikej