【发布时间】:2011-12-14 22:03:10
【问题描述】:
我正在使用 JRE6 中内置的 JSR-223 脚本引擎执行 Javascript。 Javascripts 能够访问 Java 代码和对象。当从 JavaScript 执行的 Java 代码抛出异常时,ScriptEngine 将抛出 ScriptException。
我希望能够访问导致 Javascript 抛出异常的 Java 异常。
从 Javascript 中,我可以捕获异常并查看异常的 javaException 字段:
try
{
.
}
catch (e)
{
e.javaException.printStackTrace();
}
但是,我无法控制 Javascript,只能从 ScriptEngine 执行它们。有没有办法从 ScriptException 中获取“内部”Java 异常?
我相信如果我使用的是 Rhino,RhinoException 会有一个可用的 Java 异常。 JSR-223 API 不提供 RhinoException。
【问题讨论】:
-
Throwable.getCause()不符合您的要求吗? -
在 Java 级别引起的 ScriptException 中,Rhino 在内部使用 WrappedException。 然而,设置为脚本异常的“原因”是它本身。无法获取包装的异常并查看 Java 级别异常的确切发生位置,甚至无法对非 JSR rhino 类使用反射。这似乎是一个严重的错误。
标签: java javascript jsr223