我试图弄清楚如何挽救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 ')'
由 eval 方法引发的 SyntaxError 似乎正在 eval 中的某个地方被救出,而我没有机会自己处理它。
任何人都知道如何获得我想要的行为(即,让我的“救援”子句从“评估”中捕获错误)?