我想弄清楚如何解決在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