【发布时间】:2016-11-12 04:01:00
【问题描述】:
begin
hash = {"a" => "b"}
raise hash
rescue Exception => e
p e.message
end
为什么我没有在结果中得到提升的哈希对象,而是我得到错误 - “异常类/对象预期”
【问题讨论】:
标签: ruby hash exception-handling
begin
hash = {"a" => "b"}
raise hash
rescue Exception => e
p e.message
end
为什么我没有在结果中得到提升的哈希对象,而是我得到错误 - “异常类/对象预期”
【问题讨论】:
标签: ruby hash exception-handling
这是关于您提出错误的方式的错误。
当你说raise 时,你需要传递一个“异常类/对象”。
一些使用内置错误的示例
raise(StandardError, "my message")
raise ArgumentError, "message"
raise NoMethodError
并创建一个自定义错误类:
class MyError < StandardError
end
raise MyError, "message"
【讨论】:
StandardError。
puts q.class 和puts q,您将看到q 是一个包含Ruby 片段的字符串:您放入异常的哈希已转换为字符串表示形式。 p 命令打印您给它的东西,您可以将它们复制粘贴到 Ruby 代码中并获取该特定对象,因此它在两侧添加 " 字符并使用 \" 转义 " 形成的字符哈希的字符串表示的一部分(和 \\ 代表 \ )。如果你想从字符串中返回哈希值,试试 'puts (eval q).class' 和 'puts (eval q)["a"]' 你会发现它给出了 'Hash` 和 b。