(!*******************************************************
file handleerror.mos
````````````````````
a model that demonstrates handling exceptions thrown by Java code
This example requires an installation of Java, see
the manual 'mosjvm Module for Mosel' for
compatible versions and setup instructions.
The compiled FileUtils.class file must be in the current working
directory.
(c) 2016 Fair Isaac Corporation
author: J. Farmer, 2016
*******************************************************!)
model myModel
uses 'mosjvm','mmsystem'
declarations
classAndMethodName = "FileUtils.readFileToString"
fileToRead = "input.txt"
result: text
end-declarations
! Tell Java to look for classes in work directory
setparam('jvmclasspath',getparam('workdir'))
! Call into Java to read file
! (note that the given filename does not exist, so the Java class will throw a FileNotFoundException)
result := jvmcalltext( classAndMethodName, fileToRead )
if jvmstatus=false then
writeln('ERROR from Java: ',jvmgetexceptionclass,': ',jvmgetexceptionmsg)
exit(8)
else
writeln('Read data from ',fileToRead,' as follows:')
writeln(result)
end-if
end-model
|
/**
* Example Java class, defining file-related utility functions
*
* @author J.Farmer, (c) Fair Isaac Corporation, 2016
**/
import java.io.*;
public class FileUtils {
/**
* Given a file path, read the file content into a string
**/
public static String readFileToString(String path) throws IOException {
StringWriter result = new StringWriter();
try (Reader in = new BufferedReader(new FileReader(path))) {
int c;
while ((c=in.read())!=-1) {
result.write(c);
}
}
return result.toString();
}
} |