Ich versuche herauszufinden, wie Syntaxfehler behoben werden, die auftreten, wenn Code in Ruby 1.8.6 eval()
.Wie man ein Eval in Ruby retten kann?
Ich würde den folgenden Ruby-Code erwarten:
#!/usr/bin/ruby
good_str = "(1+1)"
bad_str = "(1+1" # syntax error: missing closing paren
begin
puts eval(good_str)
puts eval(bad_str)
rescue => exc
puts "RESCUED!"
end
das folgende Ergebnis zu erzeugen, wenn auszuführen:
2
RESCUED!
Statt dessen, was ich bekommen ist:
2
eval_rescue.rb:8: (eval):1: compile error (SyntaxError)
(eval):1: syntax error, unexpected $end, expecting ')'
Es scheint, dass der SyntaxError, der durch die Eval-Methode ausgelöst wurde, irgendwo innerhalb des Evals gerettet wird, ohne mir eine Chance zu geben o handle es selbst.
Jeder hat eine Idee, wie man das Verhalten, das ich will (d. H. Für meine 'Rettung' Klausel, um den Fehler von der 'Eval' zu bekommen) bekommen?
Bitte sehen: http://stackoverflow.com/questions/10048173/why-is-it-bad-style-to-rescue-exception-e-in-ruby – gamov