0
我发现自己需要执行一个字符串。目前的方法是使用Kernel#eval()
方法。一切工作正常,但我的错误处理不起作用。例如,一个缺失的结束引号将完全杀死并退出程序。Ruby Kernel方法不能正常工作的错误处理
这是一段摘录。任何想法,为什么我不能抓住错误?
def process(str)
print "\n"
eval(str)
rescue => e
puts e
end
>> process('"')
console.rb:90:in `eval': (eval):1: unterminated string meets end of file (SyntaxError)
from console.rb:90:in `process'
from console.rb:81:in `bouncer'
from console.rb:14:in `block in prompt'
from console.rb:11:in `loop'
from console.rb:11:in `prompt'
from console.rb:97:in `<main>'
工作就像一个魅力。我不知道一个“拯救”条款只捕获一个“StandardError”。谢谢! – binarymason
@ m8ss它捕获“所有标准错误”,即“StandardError”及其子类。 ['Exception'](http://ruby-doc.org/core-2.2.3/Exception.html)的文档包含一个类层次结构。 – Stefan
没错。下次我遇到这个问题时,我会记住错误的_class_。再次感谢。 – binarymason