raise ecmascript error from JSObject
Sundararajan Athijegannathan
sundararajan.athijegannathan at oracle.com
Tue Jan 31 17:03:29 UTC 2017
Hope the following sample code helps you...
-Sundar
import javax.script.*;
import jdk.nashorn.api.scripting.*;
public class Main {
private static JSObject errorCtr;
public static void main(String[] args) throws Exception {
ScriptEngine e = new ScriptEngineManager().getEngineByName("nashorn");
// save JS Error constructor which is used later to construct
Error object
errorCtr = (JSObject)e.eval("Error");
e.put("func", new MyFunc());
e.eval("try { func() } catch(e) { print(e); print(e.stack); } ");
}
public static class MyFunc extends AbstractJSObject {
public boolean isFunction() { return true; }
public Object call(Object self, Object... args) {
// this is like "var e = new Error('myErrorMsg')" in JS code
JSObject error = (JSObject)errorCtr.newObject("myErrorMsg");
// equivalent to "throw e;"
throw (RuntimeException)error.getMember("nashornException");
}
}
}
On 31/01/17, 10:04 PM, Attila Sari wrote:
> Hi all,
>
> Is it possible to throw ecmascript error from JSObject methods? (that can
> be catched later in the script, and will be enriched with filename and line
> number)
>
> Thanks,
> Attila Sari
>
More information about the nashorn-dev
mailing list