EngineCallBacks.errorCallBack - Maple Help

Online Help

All Products    Maple    MapleSim


Home : Support : Online Help : Programming : OpenMaple : Java Application Programming Interface : EngineCallBacks Interface : OpenMaple/Java/EngineCallBacks/errorCallBack

EngineCallBacks.errorCallBack

call back function for handling error messages

 

Calling Sequence

Parameters

Description

Examples

Calling Sequence

void errorCallBack( Object data, int offset, String msg ) throws MapleException

Parameters

data

-

arbitrary data that was passed into the Engine constructor

offset

-

type of error

msg

-

text of the error message

Description

• 

errorCallBack is a member function of the com.maplesoft.openmaple.EngineCallBacks interface.  It is called when an unhandled error occurs in the Maple engine.

• 

If offset is non-negative, then the error is a parsing error and offset indicates the position of the parse error in msg.  If offset is negative the error is a general evaluation error.

• 

If errorCallBack throws the error as a MapleException, the Java OpenMaple call in Java raises the exception.  This is the preferred method for handling errors.  If errorCallBack does not throw an exception, the Java OpenMaple call returns a potentially invalid value (a null object for example).

Examples

import com.maplesoft.openmaple.*;

import com.maplesoft.externalcall.MapleException;

class Example

{

    static private class CallBacks implements EngineCallBacks

    {

    boolean limitExceeded;

    CallBacks()

    {

        limitExceeded = false;

    }

    public void textCallBack( Object data, int tag, String output )

        throws MapleException

    {

        switch ( tag )

        {

        case MAPLE_TEXT_OUTPUT:

            System.out.print( "Text: " );

            break;

        case MAPLE_TEXT_DIAG:

            System.out.print( "Diag: " );

            break;

        case MAPLE_TEXT_MISC:

            System.out.print( "Misc: " );

            break;

        case MAPLE_TEXT_HELP:

            System.out.print( "Help: " );

            break;

        case MAPLE_TEXT_QUIT:

            System.out.print( "Quit: " );

            break;

        case MAPLE_TEXT_WARNING:

            System.out.print( "Warning: " );

            break;

        case MAPLE_TEXT_DEBUG:

            System.out.print( "Debug: " );

            break;

        }

        System.out.println( output );

    }

    public void errorCallBack( Object data, int offset, String msg )

        throws MapleException

    {

        if ( offset >= 0 )

        {

        throw new MapleException( "Error: "+msg );

        }

        else

        {

        throw new MapleException( "syntax error at offset "+offset+

            ": "+msg );

        }

    }

    public void statusCallBack( Object data, long kbused, long kballoced,

        double timeused )

            throws MapleException

    {

        if ( timeused > 5 )

        {

        limitExceeded = true;

        }

        System.out.println( "Status: used = "+kbused+", alloced = "+

        kballoced+", time = "+timeused );

    }

    public String readLineCallBack( Object data, boolean debug )

        throws MapleException

    {

        return "readline";

    }

    public boolean redirectCallBack( Object data, String output, boolean

append )

        throws MapleException

    {

        System.out.println( "redirect to "+output+" append = "+append );

            return true;

    }

    public String callBackCallBack( Object data, String output )

        throws MapleException

    {

        System.out.println( "callback: "+output );

        return output+";";

    }

    public boolean queryInterrupt( Object data )

        throws MapleException

    {

        return limitExceeded;

    }

    public String streamCallBack( Object data, String name, String args[] )

        throws MapleException

    {

        StringBuffer sbuf;

        int i;

        sbuf = new StringBuffer( name );

        for ( i = 0; i < args.length; i++ )

        {

        sbuf.append( args[i] );

        }

        return sbuf.toString();

    }

    }

    public static void main( String notused[] ) throws MapleException

    {

    String mapleArgs[];

    Engine engine;

    Algebraic a;

    mapleArgs = new String[1];

    mapleArgs[0] = "java";

    engine = new Engine( mapleArgs, new CallBacks(), null, null );

    try

    {

        engine.evaluate( "1+1" );

        System.out.println( "Exception Expected" );

    }

    catch ( MapleException me )

    {

        System.out.println( me.getMessage() );

    }

    try

    {

        engine.evaluate( "int(x);" );

        System.out.println( "Exception Expected" );

    }

    catch ( MapleException me )

    {

        System.out.println( me.getMessage() );

    }

    try

    {

        engine.evaluate( "a := a+1;" );

        System.out.println( "Exception Expected" );

    }

    catch ( MapleException me )

    {

        System.out.println( me.getMessage() );

    }

    }

}

Executing this code produces the following output.

Error: unexpected end of statement

syntax error at offset -1: Error, (in int) wrong number (or type) of arguments

syntax error at offset -1: Error, recursive assignment

See Also

ExternalCalling/Java/MapleException

OpenMaple

OpenMaple/Java/Engine

OpenMaple/Java/Engine/Engine

OpenMaple/Java/EngineCallBacks

OpenMaple/Java/EngineCallBacksDefault

OpenMaple/Java/EngineCallBacksDefault/textCallBack

 


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