【发布时间】:2010-10-07 06:28:37
【问题描述】:
我正在尝试解决在 Ruby 1.8.6 中eval()ing 代码时出现的语法错误。
我希望得到以下 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 中的某个地方被救出,而我没有机会自己处理它。
有人知道如何获得我想要的行为(即,让我的“救援”子句从“评估”中捕获错误)吗?
【问题讨论】:
标签: ruby exception eval rescue