Exception Handling
This chapter discusses how MSG handles exceptions. These can arise in a variety of circumstances:
Attempts to load grids from files that are missing or corrupt.
Attempts to interpolate at locations outside the bounds of a grid.
Attempts to interpolate at locations where grid data are missing (so-called grid voids).
Attempts to interpolate with incomplete specification of photospheric parameters.
Attempts to interpolate for invalid wavelength and/or angle parameters.
When an exception occurs, how it’s signaled depends on the language interface being used.
Python
Using the Python interface, exceptions are signaled using the language’s built-in exception handling capabilities. The list of exceptions that can be thrown by each function is provided in the Python Interface chapter.
Fortran
Using the Fortran interface, exceptions are signaled through the
optional procedure argument stat
. If this argument is
present, then on return it is set to one of the status code values
defined in the Fortran parameters section. The
value STAT_OK
indicates that no problem was encountered;
other values signal an exception. If stat
is not present when
an exception occurs, then execution halts with an error message
printed to standard output.
C
Using the C interface, exceptions are signaled through the pointer
function argument stat
. If this pointer is non-null, then on
return the pointer target *stat
is set to one of the status code values
defined in the C enums section. The value
STAT_OK
indicates that no problem was encountered; other
values signal an exception. If stat
is null when an exception
occurs, then execution halts with an error message printed to standard
output.