EngineCallBacks.errorCallBack
call back function for handling error messages
Calling Sequence
Parameters
Description
Examples
void errorCallBack( Object data, int offset, String msg ) throws MapleException
data
-
arbitrary data that was passed into the Engine constructor
offset
type of error
msg
text of the error message
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).
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: " );
case MAPLE_TEXT_MISC:
System.out.print( "Misc: " );
case MAPLE_TEXT_HELP:
System.out.print( "Help: " );
case MAPLE_TEXT_QUIT:
System.out.print( "Quit: " );
case MAPLE_TEXT_WARNING:
System.out.print( "Warning: " );
case MAPLE_TEXT_DEBUG:
System.out.print( "Debug: " );
System.out.println( output );
public void errorCallBack( Object data, int offset, String msg )
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 )
if ( timeused > 5 )
limitExceeded = true;
System.out.println( "Status: used = "+kbused+", alloced = "+
kballoced+", time = "+timeused );
public String readLineCallBack( Object data, boolean debug )
return "readline";
public boolean redirectCallBack( Object data, String output, boolean
append )
System.out.println( "redirect to "+output+" append = "+append );
return true;
public String callBackCallBack( Object data, String output )
System.out.println( "callback: "+output );
return output+";";
public boolean queryInterrupt( Object data )
return limitExceeded;
public String streamCallBack( Object data, String name, String args[] )
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() );
engine.evaluate( "int(x);" );
engine.evaluate( "a := a+1;" );
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