我想弄清楚如何解决在Ruby 1.8.6中编写代码时出现的语法错误。如何在Ruby中拯救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在eval中的某处被救出,而没有给我一个机会自己处理它。
任何人都有任何想法如何获得我想要的行为(即,我的'救援'条款从'eval'捕获错误)?
请看到这一点:http://stackoverflow.com/questions/10048173/why-is-it-bad-style-to-rescue-exception-e-in-ruby – gamov 2014-09-23 04:53:58