void pic_error(pic_state *pic, const char *msg, pic_value irrs) { struct pic_error *e; e = pic_make_error(pic, pic_intern(pic, ""), msg, irrs); pic_raise(pic, pic_obj_value(e)); }
void pic_throw(pic_state *pic, pic_sym *type, const char *msg, pic_value irrs) { struct pic_error *e; e = pic_make_error(pic, type, msg, irrs); pic_raise(pic, pic_obj_value(e)); }
PIC_NORETURN static void file_error(pic_state *pic, const char *msg) { struct pic_error *e; e = pic_make_error(pic, pic_intern(pic, "file"), msg, pic_nil_value()); pic_raise(pic, pic_obj_value(e)); }
static pic_value pic_error_error(pic_state *pic) { const char *str; int argc; pic_value *argv; pic_get_args(pic, "z*", &str, &argc, &argv); pic_raise(pic, pic_make_error(pic, "", str, pic_make_list(pic, argc, argv))); }
void pic_error(pic_state *pic, const char *msg, int n, ...) { va_list ap; pic_value irrs; va_start(ap, n); irrs = pic_vlist(pic, n, ap); va_end(ap); pic_raise(pic, pic_make_error(pic, "", msg, irrs)); }
static pic_value pic_error_make_error_object(pic_state *pic) { struct pic_error *e; pic_sym *type; pic_str *msg; size_t argc; pic_value *argv; pic_get_args(pic, "ms*", &type, &msg, &argc, &argv); e = pic_make_error(pic, type, pic_str_cstr(msg), pic_list_by_array(pic, argc, argv)); return pic_obj_value(e); }