Prev Next error_handler.cpp Headings

@(@\newcommand{\W}[1]{ \; #1 \; } \newcommand{\R}[1]{ {\rm #1} } \newcommand{\B}[1]{ {\bf #1} } \newcommand{\D}[2]{ \frac{\partial #1}{\partial #2} } \newcommand{\DD}[3]{ \frac{\partial^2 #1}{\partial #2 \partial #3} } \newcommand{\Dpow}[2]{ \frac{\partial^{#1}}{\partial {#2}^{#1}} } \newcommand{\dpow}[2]{ \frac{ {\rm d}^{#1}}{{\rm d}\, {#2}^{#1}} }@)@ This is cppad-20221105 documentation. Here is a link to its current documentation .
Replacing The CppAD Error Handler: Example and Test

# 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;
}

Input File: example/utility/error_handler.cpp