1 | /*
|
---|
2 | ** mruby/error.h - Exception class
|
---|
3 | **
|
---|
4 | ** See Copyright Notice in mruby.h
|
---|
5 | */
|
---|
6 |
|
---|
7 | #ifndef MRUBY_ERROR_H
|
---|
8 | #define MRUBY_ERROR_H
|
---|
9 |
|
---|
10 | #include "mruby/common.h"
|
---|
11 |
|
---|
12 | /**
|
---|
13 | * MRuby error handling.
|
---|
14 | */
|
---|
15 | MRB_BEGIN_DECL
|
---|
16 |
|
---|
17 | struct RException {
|
---|
18 | MRB_OBJECT_HEADER;
|
---|
19 | struct iv_tbl *iv;
|
---|
20 | };
|
---|
21 |
|
---|
22 | #define mrb_exc_ptr(v) ((struct RException*)mrb_ptr(v))
|
---|
23 |
|
---|
24 | MRB_API void mrb_sys_fail(mrb_state *mrb, const char *mesg);
|
---|
25 | MRB_API mrb_value mrb_exc_new_str(mrb_state *mrb, struct RClass* c, mrb_value str);
|
---|
26 | #define mrb_exc_new_str_lit(mrb, c, lit) mrb_exc_new_str(mrb, c, mrb_str_new_lit(mrb, lit))
|
---|
27 | MRB_API mrb_value mrb_make_exception(mrb_state *mrb, int argc, const mrb_value *argv);
|
---|
28 | MRB_API mrb_value mrb_exc_backtrace(mrb_state *mrb, mrb_value exc);
|
---|
29 | MRB_API mrb_value mrb_get_backtrace(mrb_state *mrb);
|
---|
30 | MRB_API mrb_noreturn void mrb_no_method_error(mrb_state *mrb, mrb_sym id, mrb_value args, const char *fmt, ...);
|
---|
31 |
|
---|
32 | /* declaration for fail method */
|
---|
33 | MRB_API mrb_value mrb_f_raise(mrb_state*, mrb_value);
|
---|
34 |
|
---|
35 | /**
|
---|
36 | * Protect
|
---|
37 | *
|
---|
38 | * @mrbgem mruby-error
|
---|
39 | */
|
---|
40 | MRB_API mrb_value mrb_protect(mrb_state *mrb, mrb_func_t body, mrb_value data, mrb_bool *state);
|
---|
41 |
|
---|
42 | /**
|
---|
43 | * Ensure
|
---|
44 | *
|
---|
45 | * @mrbgem mruby-error
|
---|
46 | */
|
---|
47 | MRB_API mrb_value mrb_ensure(mrb_state *mrb, mrb_func_t body, mrb_value b_data,
|
---|
48 | mrb_func_t ensure, mrb_value e_data);
|
---|
49 |
|
---|
50 | /**
|
---|
51 | * Rescue
|
---|
52 | *
|
---|
53 | * @mrbgem mruby-error
|
---|
54 | */
|
---|
55 | MRB_API mrb_value mrb_rescue(mrb_state *mrb, mrb_func_t body, mrb_value b_data,
|
---|
56 | mrb_func_t rescue, mrb_value r_data);
|
---|
57 |
|
---|
58 | /**
|
---|
59 | * Rescue exception
|
---|
60 | *
|
---|
61 | * @mrbgem mruby-error
|
---|
62 | */
|
---|
63 | MRB_API mrb_value mrb_rescue_exceptions(mrb_state *mrb, mrb_func_t body, mrb_value b_data,
|
---|
64 | mrb_func_t rescue, mrb_value r_data,
|
---|
65 | mrb_int len, struct RClass **classes);
|
---|
66 |
|
---|
67 | MRB_END_DECL
|
---|
68 |
|
---|
69 | #endif /* MRUBY_ERROR_H */
|
---|