mirror of
https://github.com/mruby/mruby
synced 2026-06-08 16:11:16 +00:00
error.c (mrb_exc_get_output): a new function for old inspect format
This commit is contained in:
@@ -61,6 +61,7 @@ void mrb_exc_mesg_set(mrb_state *mrb, struct RException *exc, mrb_value mesg);
|
||||
mrb_value mrb_exc_mesg_get(mrb_state *mrb, struct RException *exc);
|
||||
mrb_value mrb_f_raise(mrb_state*, mrb_value);
|
||||
mrb_value mrb_make_exception(mrb_state *mrb, mrb_value exc, mrb_value mesg);
|
||||
mrb_value mrb_exc_get_output(mrb_state *mrb, struct RObject *exc);
|
||||
|
||||
struct RBacktrace {
|
||||
MRB_OBJECT_HEADER;
|
||||
|
||||
@@ -140,6 +140,14 @@ mrb_exc_inspect(mrb_state *mrb, mrb_value exc)
|
||||
return (mrb_nil_p(mesg)||RSTRING_LEN(mesg)==0) ? cname : mrb_format(mrb, "#<%v: %v>", cname, mesg);
|
||||
}
|
||||
|
||||
mrb_value
|
||||
mrb_exc_get_output(mrb_state *mrb, struct RObject *exc)
|
||||
{
|
||||
mrb_value cname = mrb_mod_to_s(mrb, mrb_obj_value(mrb_class_real(exc->c)));
|
||||
mrb_value mesg = mrb_exc_mesg_get(mrb, (struct RException*)exc); /* string or nil */
|
||||
return (mrb_nil_p(mesg)||RSTRING_LEN(mesg)==0) ? cname : mrb_format(mrb, "%v (%v)", mesg, cname);
|
||||
}
|
||||
|
||||
void mrb_keep_backtrace(mrb_state *mrb, mrb_value exc);
|
||||
|
||||
static void
|
||||
|
||||
Reference in New Issue
Block a user