class NoMethodError
当在一个接收者上调用一个未定义的,并且也未能通过 method_missing 响应的方法时抛出。
"hello".to_ary
为没有 Bundler 环境的 RubyGems 抛出异常。
NoMethodError: undefined method `to_ary' for an instance of String
Public Class Methods
Source
static VALUE
nometh_err_initialize(int argc, VALUE *argv, VALUE self)
{
int priv;
VALUE args, options;
argc = rb_scan_args(argc, argv, "*:", NULL, &options);
priv = (argc > 3) && (--argc, RTEST(argv[argc]));
args = (argc > 2) ? argv[--argc] : Qnil;
if (!NIL_P(options)) argv[argc++] = options;
rb_call_super_kw(argc, argv, RB_PASS_CALLED_KEYWORDS);
return nometh_err_init_attr(self, args, priv);
}
使用给定的参数,为给定的方法名构建一个 NoMethodError 异常。方法名可以通过结果对象的 name 方法访问,参数可以通过 args 方法访问。
如果传递了 private 参数,它表示该方法是在私有上下文中尝试调用的,可以通过 private_call? 方法访问。
receiver 参数存储了调用方法的对象。
Public Instance Methods
Source
static VALUE
nometh_err_args(VALUE self)
{
return rb_attr_get(self, id_args);
}
返回传递给构造函数的第三个参数。
Source
static VALUE
nometh_err_private_call_p(VALUE self)
{
return rb_attr_get(self, id_private_call_p);
}
如果导致调用的方法是以私有方式调用的,则返回 true。