Replacing the CppAD Error Handler
Keywords: replacing the cppad error handler replace assert exception Errorhandler syntax constructor parallel mode call info known line file exp msg example

| Prev | Next |  |  |  |  |  |

Replacing the CppAD Error Handler
Syntax
`# include <cppad/utility/error_handler.hpp>
` `ErrorHandler info(handler)
` `ErrorHandler::Call(known, line, file, exp, msg)
`
Constructor
When you construct a `ErrorHandler` object, the current CppAD error handler is replaced by `handler` . When the object is destructed, the previous CppAD error handler is restored.
Parallel Mode
The `ErrorHandler` constructor and destructor cannot be called in parallel execution mode. Furthermore, this rule is not abided by, a raw C++ `assert`, instead of one that uses this error handler, will be generated.
Call
When `ErrorHandler::Call` is called, the current CppAD error handler is used to report an error. This starts out as a default error handler and can be replaced using the `ErrorHandler` constructor.
info
The object `info` is used to store information that is necessary to restore the previous CppAD error handler. This is done when the destructor for `info` is called.
handler
The argument `handler` has prototype `
void (*handler)
(bool, int, const char *, const char *, const char *);
` When an error is detected, it is called with the syntax `
handler (known, line, file, exp, msg)
` This routine should not return; i.e., upon detection of the error, the routine calling `handler` does not know how to proceed.
known
The `handler` argument `known` has prototype `
bool known
` If it is true, the error being reported is from a know problem.
line
The `handler` argument `line` has prototype `
int line
` It reports the source code line number where the error is detected.
file
The `handler` argument `file` has prototype `
const char *file
` and is a `'\0'` terminated character vector. It reports the source code file where the error is detected.
exp
The `handler` argument `exp` has prototype `
const char *exp
` and is a `'\0'` terminated character vector. It is a source code boolean expression that should have been true, but is false, and thereby causes this call to `handler` .
msg
The `handler` argument `msg` has prototype `
const char *msg
` and is a `'\0'` terminated character vector. It reports the meaning of the error from the C++ programmers point of view.
Example
The file error_handler.cpp contains an example and test a test of using this routine. It returns true if it succeeds and false otherwise.

Input File: cppad/utility/error_handler.hpp