error.c (mrb_exc_get_output): a new function for old inspect format

This commit is contained in:
Yukihiro "Matz" Matsumoto
2025-05-07 12:17:24 +09:00
parent 85d048c1fb
commit 33d9ad6c44
2 changed files with 9 additions and 0 deletions
+1
View File
@@ -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;
+8
View File
@@ -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