我有这个哈希,我起诉它存储了很多代码:
system_errors = {
'00' => {error_class: SuccessfulResponse, error_message: 'TESTMODE'},
...
}
error = system_errors[response_code]
error[:error_class].new(error[:error_message], technical_message, response_code)
但是当没有比赛时,我得到:
`parse_response': undefined method `[]' for nil:NilClass (NoMethodError)
如何避免此错误?显然,如果没有匹配,我想跳过。
答案 0 :(得分:1)
您可以尝试这样的事情
error = system_errors[response_code]
if error
error[:error_class].new(error[:error_message], technical_message, response_code)
else
puts "Found no ErrorClass"
end
如果没有找到错误类,那应该注意不要创建对象。注意对象初始化行末尾的if
条件。如果您发现提供的密钥错误,它将返回true
,否则返回nil
,这等于红宝石中的false
。
答案 1 :(得分:1)
false ? (1/0) : 42
请注意,这会返回一个实例(可能是一个错误对象,从名称来判断),如果匹配则不提升它,这就是你要求的。