Я пытаюсь выяснить, как спасти синтаксические ошибки, возникающие при eval()
кодировании в Ruby 1.8.6.
Я бы ожидал следующий код 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, не давая мне возможности обработать ее самостоятельно.
У кого-нибудь есть идеи, как получить желаемое поведение (т. Е. Чтобы мой пункт 'rescue' поймал ошибку из 'eval')?