Exception Handling
Mono's exception handling contains methods
to
create `MonoException*` objects
that can be
raised.
Alternatively, you can obtain an exception that you can
raise from some of the most
common
exceptions in the .NET Runtime.
Raising and Catching exceptions
If you plan on running your code in Mono's Cooperative mode
for the Garbage Collector (for example, if you are using pure
Bitcode code generation), it you should avoid raising an
exception from any method that is not the entry point to the
internal call.
It is recommended that if you need to raise an error
condition from nested parts of your code, surface this error
to the topmost method that is surfaced as an internal call and
raise the exception there.
mono_raise_exception
Syntax
void
mono_raise_exception (MonoException *ex)
Parameters
Description
Signal the runtime that the exception ex has been raised in unmanaged code.
DEPRECATED. DO NOT ADD NEW CALLERS FOR THIS FUNCTION.
mono_unhandled_exception
Syntax
void
mono_unhandled_exception (MonoObject *exc)
Parameters
Description
This is a VM internal routine.
We call this function when we detect an unhandled exception
in the default domain.
It invokes the
UnhandledException
event in
AppDomain
or prints
a warning to the console
mono_print_unhandled_exception
Syntax
void
mono_print_unhandled_exception_internal (MonoObject *exc)
Parameters
Description
Prints the unhandled exception.
Exception Types: General API
mono_exception_from_name_domain
Syntax
MonoException*
mono_exception_from_name_domain (MonoDomain *domain, MonoImage *image,
const char* name_space, const char *name)
Parameters
domain | Domain where the return object will be created. |
image | the Mono image where to look for the class |
name_space | the namespace for the class |
name | class name |
Return value
the initialized exception instance.
Description
Creates an exception object of the given namespace/name class on
the given domain.
mono_exception_from_name
Syntax
MonoException*
mono_exception_from_name (MonoImage *image, const char *name_space,
const char *name)
Parameters
image | the Mono image where to look for the class |
name_space | the namespace for the class |
name | class name |
Return value
the initialized exception instance.
Description
Creates an exception of the given namespace/name class in the
current domain.
mono_exception_from_name_msg
Syntax
MonoException*
mono_exception_from_name_msg (MonoImage *image, const char *name_space,
const char *name, const char *msg)
Parameters
image | the Mono image where to look for the class |
name_space | the namespace for the class |
name | class name |
msg | the message to embed inside the exception |
Return value
the initialized exception instance.
Description
Creates an exception and initializes its message field.
mono_exception_from_name_two_strings
Syntax
MonoException*
mono_exception_from_name_two_strings (MonoImage *image, const char *name_space,
const char *name, MonoString *a1_raw, MonoString *a2_raw)
Parameters
image | the Mono image where to look for the class |
name_space | the namespace for the class |
name | class name |
a1 | first string argument to pass |
a2 | second string argument to pass |
Return value
the initialized exception instance.
Description
Creates an exception from a constructor that takes two string
arguments.
Obtaining Common Exceptions
There are a number of common exceptions that are used by
the runtime, use the routines in this section to get a copy of
those exceptions.
mono_get_exception_appdomain_unloaded
Syntax
MonoException*
mono_get_exception_appdomain_unloaded (void)
Return value
a new instance of the System.AppDomainUnloadedException
mono_get_exception_argument
Syntax
MonoException*
mono_get_exception_argument (const char *arg, const char *msg)
Parameters
arg | the name of the invalid argument. |
Return value
a new instance of the System.ArgumentException
mono_get_exception_argument_null
Syntax
MonoException*
mono_get_exception_argument_null (const char *arg)
Parameters
arg | the name of the argument that is null |
Return value
a new instance of the System.ArgumentNullException
mono_get_exception_argument_out_of_range
Syntax
MonoException*
mono_get_exception_argument_out_of_range (const char *arg)
Parameters
arg | the name of the out of range argument. |
Return value
a new instance of the System.ArgumentOutOfRangeException
mono_get_exception_arithmetic
Syntax
MonoException*
mono_get_exception_arithmetic (void)
Return value
a new instance of the System.ArithmeticException
mono_get_exception_array_type_mismatch
Syntax
MonoException*
mono_get_exception_array_type_mismatch (void)
Return value
a new instance of the System.ArrayTypeMismatchException
mono_get_exception_bad_image_format
Syntax
MonoException*
mono_get_exception_bad_image_format (const char *msg)
Parameters
msg | an informative message for the user. |
Return value
a new instance of the System.BadImageFormatException
mono_get_exception_cannot_unload_appdomain
Syntax
MonoException*
mono_get_exception_cannot_unload_appdomain (const char *msg)
Parameters
inner | the inner exception. |
Return value
a new instance of the System.CannotUnloadAppDomainException
mono_get_exception_class
Syntax
MonoClass*
mono_get_exception_class (void)
Return value
The MonoClass*
for the type
.
Description
Use this function to get the MonoClass*
that the runtime is using for System.Exception
.
mono_get_exception_divide_by_zero
Syntax
MonoException*
mono_get_exception_divide_by_zero (void)
Return value
a new instance of the System.DivideByZeroException
mono_get_exception_execution_engine
Syntax
MonoException*
mono_get_exception_execution_engine (const char *msg)
Parameters
msg | the message to pass to the user |
Return value
a new instance of the System.ExecutionEngineException
mono_get_exception_file_not_found2
Syntax
MonoException*
mono_get_exception_file_not_found2 (const char *msg, MonoString *fname_raw)
Parameters
msg | an informative message for the user. |
fname | the name of the file not found. |
Return value
a new instance of the System.IO.FileNotFoundException
mono_get_exception_file_not_found
Syntax
MonoException*
mono_get_exception_file_not_found (MonoString *fname_raw)
Parameters
fname | the name of the file not found. |
Return value
a new instance of the System.IO.FileNotFoundException
mono_get_exception_index_out_of_range
Syntax
MonoException*
mono_get_exception_index_out_of_range ()
Return value
a new instance of the System.IndexOutOfRangeException
mono_get_exception_invalid_cast
Syntax
MonoException*
mono_get_exception_invalid_cast ()
Return value
a new instance of the System.InvalidCastException
mono_get_exception_io
Syntax
MonoException*
mono_get_exception_io (const char *msg)
Parameters
msg | the message to present to the user |
Return value
a new instance of the System.IO.IOException
mono_get_exception_missing_method
Syntax
MonoException*
mono_get_exception_missing_method (const char *class_name, const char *member_name)
Parameters
class_name | the class where the lookup was performed. |
member_name | the name of the missing method. |
Return value
a new instance of the System.MissingMethodException
mono_get_exception_not_implemented
Syntax
MonoException*
mono_get_exception_not_implemented (const char *msg)
Parameters
msg | the message to pass to the user |
Return value
a new instance of the System.NotImplementedException
mono_get_exception_null_reference
Syntax
MonoException*
mono_get_exception_null_reference (void)
Return value
a new instance of the System.NullReferenceException
mono_get_exception_overflow
Syntax
MonoException*
mono_get_exception_overflow (void)
Return value
a new instance of the System.OverflowException
mono_get_exception_security
Syntax
MonoException*
mono_get_exception_security (void)
Return value
a new instance of the System.Security.SecurityException
mono_get_exception_serialization
Syntax
MonoException*
mono_get_exception_serialization (const char *msg)
Parameters
msg | the message to pass to the user |
Return value
a new instance of the System.Runtime.Serialization.SerializationException
mono_get_exception_stack_overflow
Syntax
MonoException*
mono_get_exception_stack_overflow (void)
Return value
a new instance of the System.StackOverflowException
mono_get_exception_synchronization_lock
Syntax
MonoException*
mono_get_exception_synchronization_lock (const char *msg)
Parameters
inner | the inner exception. |
Return value
a new instance of the System.SynchronizationLockException
mono_get_exception_thread_abort
Syntax
MonoException*
mono_get_exception_thread_abort (void)
Return value
a new instance of the System.Threading.ThreadAbortException
mono_get_exception_thread_state
Syntax
MonoException*
mono_get_exception_thread_state (const char *msg)
Parameters
msg | the message to present to the user |
Return value
a new instance of the System.Threading.ThreadStateException
mono_get_exception_type_initialization
Syntax
MonoException*
mono_get_exception_type_initialization (const gchar *type_name, MonoException* inner_raw)
Parameters
type_name | the name of the type that failed to initialize. |
inner | the inner exception. |
Return value
a new instance of the System.TypeInitializationException
mono_get_exception_type_load
Syntax
MonoException*
mono_get_exception_type_load (MonoString *class_name_raw, char *assembly_name)
Parameters
class_name | the name of the class that could not be loaded |
assembly_name | the assembly where the class was looked up. |
Return value
a new instance of the System.TypeLoadException
mono_get_exception_invalid_operation
Syntax
MonoException*
mono_get_exception_invalid_operation (const char *msg)
Parameters
msg | the message to pass to the user |
Return value
a new instance of the System.InvalidOperationException
mono_get_exception_missing_field
Syntax
MonoException*
mono_get_exception_missing_field (const char *class_name, const char *member_name)
Parameters
class_name | the class where the lookup was performed |
member_name | the name of the missing field. |
Return value
a new instance of the System.MissingFieldException
mono_get_exception_not_supported
Syntax
MonoException*
mono_get_exception_not_supported (const char *msg)
Parameters
msg | the message to pass to the user |
Return value
a new instance of the System.NotSupportedException
mono_get_exception_reflection_type_load
Syntax
MonoException*
mono_get_exception_reflection_type_load (MonoArray *types_raw, MonoArray *exceptions_raw)
Parameters
types | an array of types that were defined in the moduled loaded. |
exceptions | an array of exceptions that were thrown during the type loading. |
Return value
a new instance of the System.Reflection.ReflectionTypeLoadException
mono_exception_from_token_two_strings
Syntax
MonoException*
mono_exception_from_token_two_strings (MonoImage *image, guint32 token, MonoString *arg1_raw, MonoString *arg2_raw)
Description
Same as mono_exception_from_name_two_strings, but lookup the exception class using
IMAGE and TOKEN.
mono_get_exception_bad_image_format2
Syntax
MonoException*
mono_get_exception_bad_image_format2 (const char *msg, MonoString *fname_raw)
Parameters
msg | an informative message for the user. |
fname | The full name of the file with the invalid image. |
Return value
a new instance of the System.BadImageFormatException
mono_get_exception_field_access
Syntax
MonoException*
mono_get_exception_field_access (void)
Return value
a new instance of the System.FieldAccessException
mono_get_exception_method_access
Syntax
MonoException*
mono_get_exception_method_access (void)
Return value
a new instance of the System.MethodAccessException
mono_get_exception_out_of_memory
Syntax
MonoException*
mono_get_exception_out_of_memory (void)
Return value
a new instance of the System.OutOfMemoryException
mono_get_exception_runtime_wrapped
Syntax
MonoException*
mono_get_exception_runtime_wrapped (MonoObject *wrapped_exception_raw)