您如何从 Nashorn 获取 JavaScript 堆栈跟踪?
How do you get the JavaScript stack trace from Nashorn?
我有一个脚本在 Chrome 中运行良好但在 Nashorn 上崩溃:
(Error: Namespace "com.cognitect.transit.util" already declared. in at line number 19664 at column number 6
该错误不是很有用,因为该行包含:
throw Error('Namespace "' + name + '" already declared.');
我需要从 Nashorn 获取完整的堆栈跟踪,我发现 NashornException.getScriptStackString
但 Nashorn 生成的错误是 javax.script.ScriptException
类型,当我调用 NashornException.getScriptStackString
.
如何从 Nashorn 获取 JavaScript 堆栈跟踪?
我不想从JavaScript开始做,我想像浏览器那样做,不管你是什么JS代码运行。我的很多 JS 代码都是第三方的,它是生成的,我无法修改我必须打印异常以防万一的数千个函数。
NashornException
可作为 ScriptException
的原因:
import jdk.nashorn.api.scripting.NashornException;
...
catch (ScriptException e) {
if (e.getCause() instance of NashornException)
String jsStackTrace = NashornException.getScriptStackString(e.getCause());
}
我有一个脚本在 Chrome 中运行良好但在 Nashorn 上崩溃:
(Error: Namespace "com.cognitect.transit.util" already declared. in at line number 19664 at column number 6
该错误不是很有用,因为该行包含:
throw Error('Namespace "' + name + '" already declared.');
我需要从 Nashorn 获取完整的堆栈跟踪,我发现 NashornException.getScriptStackString
但 Nashorn 生成的错误是 javax.script.ScriptException
类型,当我调用 NashornException.getScriptStackString
.
如何从 Nashorn 获取 JavaScript 堆栈跟踪?
我不想从JavaScript开始做,我想像浏览器那样做,不管你是什么JS代码运行。我的很多 JS 代码都是第三方的,它是生成的,我无法修改我必须打印异常以防万一的数千个函数。
NashornException
可作为 ScriptException
的原因:
import jdk.nashorn.api.scripting.NashornException;
...
catch (ScriptException e) {
if (e.getCause() instance of NashornException)
String jsStackTrace = NashornException.getScriptStackString(e.getCause());
}