Je suis à essayer de comprendre comment sauver les erreurs de syntaxe qui nous viennent quand eval()ing code en Ruby 1.8.6.
J'attendrais la suite du code Ruby:
#!/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
pour produire le résultat suivant lorsque vous exécutez:
2
RESCUED!
Au lieu de cela, ce que je reçois est:
2
eval_rescue.rb:8: (eval):1: compile error (SyntaxError)
(eval):1: syntax error, unexpected $end, expecting ')'
Il semble que la SyntaxError soulevées par la méthode eval est d'être secouru quelque part à l'intérieur de l'eval, sans me donner une chance de le gérer moi-même.
Quelqu'un a une idée de comment obtenir le comportement que je veux (c'est à dire, pour mon "sauvetage" clause d'intercepter l'erreur de l' 'eval')?