class KeyError - Documentation for Ruby 4.0 (original) (raw)

Raised when the specified key is not found. It is a subclass of IndexError.

h = {"foo" => :bar} h.fetch("foo") h.fetch("baz")

Public Class Methods

Source

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;

}

Construct a new KeyError exception with the given message, receiver and key.

Public Instance Methods

Source

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");

}

Return the key caused this KeyError exception.

Source

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");

}

Return the receiver associated with this KeyError exception.