无法解救YAML.loadexception
我正在尝试处理在Ruby中加载无效的YAML数据,但似乎无法挽救心理引发的exception。
这是一些示例代码,用于演示我遇到的问题:
require 'yaml' begin YAML.load('&*%^*') rescue puts "Rescued" end
例外:
# ruby test.rb /usr/lib64/ruby/1.9.1/psych.rb:203:in `parse': (): did not find expected alphabetic or numeric character while scanning an anchor at line 1 column 1 (Psych::SyntaxError) from /usr/lib64/ruby/1.9.1/psych.rb:203:in `parse_stream' from /usr/lib64/ruby/1.9.1/psych.rb:151:in `parse' from /usr/lib64/ruby/1.9.1/psych.rb:127:in `load' from test.rb:3:in `'
请参阅开始救援未捕获错误 。 可以挽救语法错误,但不推荐。 这就是为什么你需要跳过输入“ rescue SyntaxError
”的额外箍。
SyntaxError
的inheritance是:
SyntaxError < ScriptError < Exception
没有参数的rescue
只捕获StandardError
,它是Exception
的子类:
StandardError < Exception
因此,如果要从Yaml.load
捕获语法错误,则必须使用rescue Exception => e
来Yaml.load
rescue SyntaxError => e
或捕获所有错误。