Exception: Exception
- Inherits:
-
Object
- Object
- Exception
- Defined in:
- src/error.c
Overview
15.2.22
Direct Known Subclasses
Instance Method Summary (collapse)
- - (Object) backtrace
-
- (Object) exception
call-seq: exc.exception(string) -> an_exception or exc.
-
- (Exception) new(msg = nil)
constructor
Construct a new Exception object, optionally passing in a message.
-
- (String) inspect
Returns this exception's file name, line number, message and class name.
-
- (String) message
Returns the result of invoking exception.to_s.
-
- (String) to_s
Returns exception's message (or the name of the exception if no message is set).
Constructor Details
- (Exception) new(msg = nil)
Construct a new Exception object, optionally passing in
a message.
43 44 45 46 47 48 49 50 51 52 |
# File 'src/error.c', line 43 static mrb_value exc_initialize(mrb_state *mrb, mrb_value exc) { mrb_value mesg; if (mrb_get_args(mrb, "|o", &mesg) == 1) { mrb_iv_set(mrb, exc, mrb_intern_lit(mrb, "mesg"), mesg); } return exc; } |
Instance Method Details
- (Object) backtrace
- (Object) exception
call-seq:
exc.exception(string) -> an_exception or exc
With no argument, or if the argument is the same as the receiver, return
the receiver. Otherwise, create a new exception object of the same class as
the receiver, but with a message equal to string.to_str
.
67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 |
# File 'src/error.c', line 67 static mrb_value exc_exception(mrb_state *mrb, mrb_value self) { mrb_value exc; mrb_value a; int argc; argc = mrb_get_args(mrb, "|o", &a); if (argc == 0) return self; if (mrb_obj_equal(mrb, self, a)) return self; exc = mrb_obj_clone(mrb, self); mrb_iv_set(mrb, exc, mrb_intern_lit(mrb, "mesg"), a); return exc; } |
- (String) inspect
Returns this exception's file name, line number, message and class name. If file name or line number is not set, returns message and class name.
133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 |
# File 'src/error.c', line 133 static mrb_value exc_inspect(mrb_state *mrb, mrb_value exc) { mrb_value str, mesg, file, line; mrb_bool append_mesg; mesg = mrb_attr_get(mrb, exc, mrb_intern_lit(mrb, "mesg")); file = mrb_attr_get(mrb, exc, mrb_intern_lit(mrb, "file")); line = mrb_attr_get(mrb, exc, mrb_intern_lit(mrb, "line")); append_mesg = !mrb_nil_p(mesg); if (append_mesg) { mesg = mrb_obj_as_string(mrb, mesg); append_mesg = RSTRING_LEN(mesg) > 0; } if (!mrb_nil_p(file) && !mrb_nil_p(line)) { str = mrb_str_dup(mrb, file); mrb_str_cat_lit(mrb, str, ":"); mrb_str_append(mrb, str, line); mrb_str_cat_lit(mrb, str, ": "); if (append_mesg) { mrb_str_cat_str(mrb, str, mesg); mrb_str_cat_lit(mrb, str, " ("); } mrb_str_cat_cstr(mrb, str, mrb_obj_classname(mrb, exc)); if (append_mesg) { mrb_str_cat_lit(mrb, str, ")"); } } else { const char *cname = mrb_obj_classname(mrb, exc); str = mrb_str_new_cstr(mrb, cname); mrb_str_cat_lit(mrb, str, ": "); if (append_mesg) { mrb_str_cat_str(mrb, str, mesg); } else { mrb_str_cat_cstr(mrb, str, cname); } } return str; } |
- (String) message
Returns the result of invoking exception.to_s
. Normally this
returns the exception's message or name. By supplying a to_str method,
exceptions are agreeing to be used where Strings are expected.
117 118 119 120 121 |
# File 'src/error.c', line 117 static mrb_value exc_message(mrb_state *mrb, mrb_value exc) { return mrb_funcall(mrb, exc, "to_s", 0); } |
- (String) to_s
Returns exception's message (or the name of the exception if no message is set).
91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 |
# File 'src/error.c', line 91 static mrb_value exc_to_s(mrb_state *mrb, mrb_value exc) { mrb_value mesg = mrb_attr_get(mrb, exc, mrb_intern_lit(mrb, "mesg")); struct RObject *p; if (!mrb_string_p(mesg)) { return mrb_str_new_cstr(mrb, mrb_obj_classname(mrb, exc)); } p = mrb_obj_ptr(mesg); if (!p->c) { p->c = mrb->string_class; } return mesg; } |