【问题标题】:How to access Java exception that causes ScriptException using JSR-223如何使用 JSR-223 访问导致 ScriptException 的 Java 异常
【发布时间】: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


【解决方案1】:

你试过e.getCause()吗?

【讨论】:

  • 是的,但它停止在 JavaScript,它不包含 Java 代码中的原因
猜你喜欢
  • 2010-11-12
  • 1970-01-01
  • 2015-02-06
  • 1970-01-01
  • 1970-01-01
  • 2018-12-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多