我想弄清楚如何使OpenStruct的子類(或任何類的問題)或散列會引發自定義異常if我嘗試訪問尚未設置的屬性。我無法獲得define_method
和method_missing
來做到這一點,所以我不知道它應該如何在Ruby中完成。訪問OpenStruct中不存在的屬性時引發異常
下面是一個例子:
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
編輯:存在不應該拋出異常屬性。我正在尋找的功能是,我可以自由訪問屬性,如果它不存在,我的自定義異常將被提出。
您可以在這裏使用'fetch'方法而不是覆蓋'[]'。 http://www.ruby-doc.org/core-1.9.3/Hash.html#method-i-fetch –