Error catalog (ErrorCatalog.h)ΒΆ
ErrorCatalog.h
is the COMPAS error catalogue. The error catalogue defines symbolic names for all COMPAS errors, and
corresponding error strings for those errors.
To add a new error, add the symbolic name to the ERROR
enum class, and the corresponding error string to the ERROR_CATALOG
map.
The key to the ERROR_CATALOG
map is the symbolic name in the ERROR
enum class. The map entry is a tuple containing the
ERROR_SCOPE
associated with the error (see below), and the error string.
The ERROR_SCOPE
enum class provides a mechanism to allow developers to specify when, if at all, a particular error/warning
should be displayed by the SHOW_WARN*
and SHOW_ERROR*
macros (see Error handling service).
The values for ERROR_SCOPE
and their meanings are:
NEVER : the error/warning should never be displayed
ALWAYS : the error/warning should always be displayed
FIRST : the error/warning should only be displayed the first time it is encountered
FIRST_IN_FUNCTION : the error/warning should only be displayed the first time it is encountered for a function
FIRST_IN_STELLAR_TYPE: the error/warning should only be displayed the first time it is encountered for a stellar type (see enum class STELLAR_TYPE in typedefs.h)
FIRST_IN_OBJECT_TYPE : the error/warning should only be displayed the first time it is encountered for an object type (see enum class OBJECT_TYPE in typedefs.h)
FIRST_IN_OBJECT_ID : the error/warning should only be displayed the first time it is encountered for an object id (each object is assigned a unique object id - e.g. a star or binary, each constituent star of a binary)
The THROW_ERROR*
macros (see Error handling service) are not affected by ERROR_SCOPE
.
A convenience function for retrieving the error text is #defined here:
#define ERR_MSG(x) std::get<1>(ERROR_CATALOG.at(x))