類別 KeyError
當找不到指定鍵時引發。它是 IndexError
的子類別。
h = {"foo" => :bar} h.fetch("foo") #=> :bar h.fetch("baz") #=> KeyError: key not found: "baz"
公開類別方法
new(message=nil, receiver: nil, key: nil) → key_error 按一下以切換來源
使用指定的訊息、接收器和鍵建立新的 KeyError
例外狀況。
static VALUE key_err_initialize(int argc, VALUE *argv, VALUE self) { VALUE options; rb_call_super(rb_scan_args(argc, argv, "01:", NULL, &options), argv); if (!NIL_P(options)) { ID keywords[2]; VALUE values[numberof(keywords)]; int i; keywords[0] = id_receiver; keywords[1] = id_key; rb_get_kwargs(options, keywords, 0, numberof(values), values); for (i = 0; i < numberof(values); ++i) { if (!UNDEF_P(values[i])) { rb_ivar_set(self, keywords[i], values[i]); } } } return self; }
公開執行個體方法
key → object 按一下以切換來源
傳回導致此 KeyError
例外狀況的鍵。
static VALUE key_err_key(VALUE self) { VALUE key; key = rb_ivar_lookup(self, id_key, Qundef); if (!UNDEF_P(key)) return key; rb_raise(rb_eArgError, "no key is available"); }
receiver → object 按一下以切換來源
傳回與此 KeyError
例外狀況關聯的接收器。
static VALUE key_err_receiver(VALUE self) { VALUE recv; recv = rb_ivar_lookup(self, id_receiver, Qundef); if (!UNDEF_P(recv)) return recv; rb_raise(rb_eArgError, "no receiver is available"); }