push an error handling procedure - Maple Help

Online Help

All Products    Maple    MapleSim

Home : Support : Online Help : Programming : OpenMaple : C Application Programming Interface : Evaluation and Error Handling : OpenMaple/C/MaplePushErrorProc

MaplePushErrorProc - push an error handling procedure

MaplePopErrorProc - pop an error handling procedure

Calling Sequence

MaplePushErrorProc(kv, void (M_DECL *errorproc)( char *msg, void *d), void *data )





kernel handle of type MKernelVector



an error handling routine that accepts two arguments msg and d



a value to be passed to errorproc



The MaplePushErrorProc and MaplePopErrorProc functions are used to manage exception handling routines.


Maple maintains a stack of error handling routines. When an exception is raised, each function on the stack will be called. Two arguments are passed to these functions: the first, msg, is the exception being raised and the second, d, is the value of data that is given when MaplePushErrorProc is called.


MaplePushErrorProc adds the function errorproc to the top of the error handling stack.  The value of data will be passed to errorproc if an exception occurs.


MaplePopErrorProc removes an error handling procedure from the stack of error handling routines.


It is important that error handling routines are removed from the stack when they are no longer needed.


#include "maplec.h"

void M_DECL FreeMemoryBuffer( char *error, void *data )


    free( data );



ALGEB M_DECL DoABunchOfWork( MKernelVector kv, ALGEB *args )


    int *buffer = (int*)malloc( 1000 );

    MaplePushErrorProc( kv, FreeMemoryBuffer, buffer );

    CallAFunctionThatMightThrowAnException( kv, args, buffer );

    MaplePopErrorProc( kv );

    free( buffer );

    return ToMapleNULL( kv );


See Also

CustomWrapper, define_external, eval, OpenMaple, OpenMaple/C/API, OpenMaple/C/Examples

Download Help Document

Was this information helpful?

Please add your Comment (Optional)
E-mail Address (Optional)
What is ? This question helps us to combat spam