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 内のどこかでレスキューされているようです。
私が望む動作を取得する方法を知っている人はいますか (つまり、「レスキュー」句が「評価」からエラーをキャッチするため)?