我试图弄清楚如何做到这一点,以便在我尝试访问尚未设置的属性时,OpenStruct 的子类(或与此相关的任何类)或哈希将引发自定义异常。我无法做到这一点define_method
,method_missing
所以我不知道应该如何在 Ruby 中完成。
这是一个例子:
class Request < OpenStruct...
request = Request.new
begin
request.non_existent_attr
rescue CustomError...
我可以想象它必须是这样的:
class Hash
# if trying to access key:
# 1) key exists, return key
# 2) key doesn't exist, raise exception
end
编辑:存在的属性不应引发异常。我正在寻找的功能是让我可以自由地访问属性,如果它碰巧不存在,我的自定义异常将被引发。