1 /**
2  * \file
3  */
4 
5 #ifndef _MONO_METADATA_EXCEPTION_H_
6 #define _MONO_METADATA_EXCEPTION_H_
7 
8 #include <mono/metadata/object.h>
9 #include <mono/metadata/image.h>
10 
11 MONO_BEGIN_DECLS
12 
13 extern MONO_API MonoException *
14 mono_exception_from_name               (MonoImage *image,
15 					const char* name_space,
16 					const char *name);
17 
18 MONO_API MonoException *
19 mono_exception_from_token              (MonoImage *image, uint32_t token);
20 
21 MONO_RT_EXTERNAL_ONLY
22 MONO_API MonoException *
23 mono_exception_from_name_two_strings (MonoImage *image, const char *name_space,
24 				      const char *name, MonoString *a1, MonoString *a2);
25 
26 MONO_API MonoException *
27 mono_exception_from_name_msg	       (MonoImage *image, const char *name_space,
28 					const char *name, const char *msg);
29 
30 MONO_RT_EXTERNAL_ONLY
31 MONO_API MonoException *
32 mono_exception_from_token_two_strings (MonoImage *image, uint32_t token,
33 						   MonoString *a1, MonoString *a2);
34 
35 extern MONO_API MonoException *
36 mono_exception_from_name_domain        (MonoDomain *domain, MonoImage *image,
37 					const char* name_space,
38 					const char *name);
39 
40 MONO_API MonoException *
41 mono_get_exception_divide_by_zero      (void);
42 
43 MONO_API MonoException *
44 mono_get_exception_security            (void);
45 
46 MONO_API MonoException *
47 mono_get_exception_arithmetic          (void);
48 
49 MONO_API MonoException *
50 mono_get_exception_overflow            (void);
51 
52 MONO_API MonoException *
53 mono_get_exception_null_reference      (void);
54 
55 MONO_API MonoException *
56 mono_get_exception_execution_engine    (const char *msg);
57 
58 MONO_API MonoException *
59 mono_get_exception_thread_abort        (void);
60 
61 MONO_API MonoException *
62 mono_get_exception_thread_state        (const char *msg);
63 
64 MONO_API MonoException *
65 mono_get_exception_thread_interrupted  (void);
66 
67 MONO_API MonoException *
68 mono_get_exception_serialization       (const char *msg);
69 
70 MONO_API MonoException *
71 mono_get_exception_invalid_cast        (void);
72 
73 MONO_API MonoException *
74 mono_get_exception_invalid_operation (const char *msg);
75 
76 MONO_API MonoException *
77 mono_get_exception_index_out_of_range  (void);
78 
79 MONO_API MonoException *
80 mono_get_exception_array_type_mismatch (void);
81 
82 MONO_API MonoException *
83 mono_get_exception_type_load           (MonoString *class_name, char *assembly_name);
84 
85 MONO_API MonoException *
86 mono_get_exception_missing_method      (const char *class_name, const char *member_name);
87 
88 MONO_API MonoException *
89 mono_get_exception_missing_field       (const char *class_name, const char *member_name);
90 
91 MONO_API MonoException *
92 mono_get_exception_not_implemented     (const char *msg);
93 
94 MONO_API MonoException *
95 mono_get_exception_not_supported       (const char *msg);
96 
97 MONO_API MonoException*
98 mono_get_exception_argument_null       (const char *arg);
99 
100 MONO_API MonoException *
101 mono_get_exception_argument            (const char *arg, const char *msg);
102 
103 MONO_API MonoException *
104 mono_get_exception_argument_out_of_range (const char *arg);
105 
106 MONO_API MonoException *
107 mono_get_exception_io                    (const char *msg);
108 
109 MONO_API MonoException *
110 mono_get_exception_file_not_found        (MonoString *fname);
111 
112 MONO_RT_EXTERNAL_ONLY
113 MONO_API MonoException *
114 mono_get_exception_file_not_found2       (const char *msg, MonoString *fname);
115 
116 MONO_RT_EXTERNAL_ONLY
117 MONO_API MonoException *
118 mono_get_exception_type_initialization (const char *type_name, MonoException *inner);
119 
120 MONO_API MonoException *
121 mono_get_exception_synchronization_lock (const char *msg);
122 
123 MONO_API MonoException *
124 mono_get_exception_cannot_unload_appdomain (const char *msg);
125 
126 MONO_API MonoException *
127 mono_get_exception_appdomain_unloaded (void);
128 
129 MONO_API MonoException *
130 mono_get_exception_bad_image_format (const char *msg);
131 
132 MONO_RT_EXTERNAL_ONLY
133 MONO_API MonoException *
134 mono_get_exception_bad_image_format2 (const char *msg, MonoString *fname);
135 
136 MONO_API MonoException *
137 mono_get_exception_stack_overflow (void);
138 
139 MONO_API MonoException *
140 mono_get_exception_out_of_memory (void);
141 
142 MONO_API MonoException *
143 mono_get_exception_field_access (void);
144 
145 MONO_API MonoException *
146 mono_get_exception_method_access (void);
147 
148 MONO_RT_EXTERNAL_ONLY
149 MONO_API MonoException *
150 mono_get_exception_reflection_type_load (MonoArray *types, MonoArray *exceptions);
151 
152 MONO_RT_EXTERNAL_ONLY
153 MONO_API MonoException *
154 mono_get_exception_runtime_wrapped (MonoObject *wrapped_exception);
155 
156 /* Installs a function which is called when the runtime encounters an unhandled exception.
157  * This hook isn't expected to return.
158  * If no hook has been installed, the runtime will print a message before aborting.
159  */
160 typedef void  (*MonoUnhandledExceptionFunc)         (MonoObject *exc, void *user_data);
161 MONO_API void mono_install_unhandled_exception_hook (MonoUnhandledExceptionFunc func, void *user_data);
162 void          mono_invoke_unhandled_exception_hook  (MonoObject *exc);
163 
164 MONO_END_DECLS
165 
166 #endif /* _MONO_METADATA_EXCEPTION_H_ */
167