我正在尝试找出如何拯救在 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 ')'
看起来eval方法引发的SyntaxError被某个地方捕获了,而没有让我自己处理它的机会。
有人知道如何实现我想要的行为吗(即,让我的“rescue”子句捕获来自“eval”的错误)?