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.
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.
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.