![]() |
Prev | Next | error_handler.cpp | Headings |
# include <cppad/utility/error_handler.hpp>
# include <cstring>
namespace {
void myhandler(
bool known ,
int line ,
const char *file ,
const char *exp ,
const char *msg )
{ // error handler must not return, so throw an exception
throw line;
}
}
bool ErrorHandler(void)
{ using CppAD::ErrorHandler;
int lineMinusFive = 0;
// replace the default CppAD error handler
ErrorHandler info(myhandler);
// set ok to false unless catch block is executed
bool ok = false;
// use try / catch because handler throws an exception
try {
// set the static variable Line to next source code line
lineMinusFive = __LINE__;
// can call myhandler anywhere that ErrorHandler is defined
ErrorHandler::Call(
true , // reason for the error is known
__LINE__ , // current source code line number
__FILE__ , // current source code file name
"1 > 0" , // an intentional error condition
"Testing ErrorHandler" // reason for error
);
}
catch ( int line )
{ // check value of the line number that was passed to handler
ok = (line == lineMinusFive + 5);
}
// info drops out of scope and the default CppAD error handler
// is restored when this routine returns.
return ok;
}