Wie kann man ein Eval in Ruby retten?

Ich versuche, herauszufinden, wie zu retten syntax-Fehler, die kommen, wenn eval()ing-code in Ruby 1.8.6.

Ich würde erwarten, dass die folgenden Ruby-code:

#!/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

produzieren Folgendes Ergebnis, wenn Sie ausgeführt wird:

2
RESCUED!

Statt, was ich bekomme, ist:

2
eval_rescue.rb:8: (eval):1: compile error (SyntaxError)
(eval):1: syntax error, unexpected $end, expecting ')'

Scheint es, dass der SyntaxError-ausgelöst durch die eval-Methode wird gerettet, die irgendwo innerhalb des eval, ohne mir eine chance zu handhaben, es selbst.

Jemand eine Idee, wie man das Verhalten, das ich will (also, für meine "Rettung" - Klausel, um den Fehler abzufangen, die aus dem 'eval')?

InformationsquelleAutor der Frage Brent Chapman | 2009-02-12

Schreibe einen Kommentar