Я пытаюсь выяснить, как устранить синтаксические ошибки, возникающие при использовании кода eval()
в Ruby 1.8.6.Как спасти eval в 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
произвести следующий результат при запуске:
2
RESCUED!
Вместо того, что я получаю:
2
eval_rescue.rb:8: (eval):1: compile error (SyntaxError)
(eval):1: syntax error, unexpected $end, expecting ')'
Оказывается что SyntaxError, поднятый методом eval, спасается где-то внутри eval, не давая мне шанса t o справитесь с этим сам.
У кого-нибудь есть идея, как получить поведение, которое я хочу (т. Е. Для моего предложения «rescue», чтобы уловить ошибку из «eval»)?
Пожалуйста, смотрите это: http://stackoverflow.com/questions/10048173/why-is-it-bad-style-to-rescue-exception-e-in-ruby – gamov