我试图找出如何挽救在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 ')'
似乎eval方法引发的SyntaxError正在eval中的某个地方被解救,而没有给我一个自己处理它的机会.
有人知道如何获得我想要的行为(例如,让我的'rescue'子句捕捉'eval'中的错误)吗?