Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/429.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript ScriptEngineManager获取最后一个成功行_Javascript_Nashorn_Scriptengine - Fatal编程技术网

Javascript ScriptEngineManager获取最后一个成功行

Javascript ScriptEngineManager获取最后一个成功行,javascript,nashorn,scriptengine,Javascript,Nashorn,Scriptengine,我在grails应用程序中使用ScriptEngineManager来执行javascript代码 当我执行此javascript时: var x = new java.util.ArrayList([1, 2, 3]) log(x[55]) 使用此代码: try { ScriptEngineManager manager = new ScriptEngineManager(); ScriptEngine engine = manager.getEngineByName("j

我在grails应用程序中使用ScriptEngineManager来执行javascript代码

当我执行此javascript时:

var x = new java.util.ArrayList([1, 2, 3]) 
log(x[55])
使用此代码:

try {
    ScriptEngineManager manager = new ScriptEngineManager();
    ScriptEngine engine = manager.getEngineByName("javascript")
    return engine.eval(javascript)
} catch (ScriptException jsEx) {
    // Exception is added in outer function to the log
    throw new JavascriptException(jsEx.getMessage(), jsEx)
} catch (Exception e) {
    throw new JavascriptException("UNEXPECTED Exception in invokeJavaScript " + e.getMessage(), e)
}
我在expetion e中得到了一个
java.lang.IndexOutOufBoundsException
。这没关系,但我想知道javascript中哪一行发生了错误。
是否有可能从javascript代码中获得最后一行成功的代码?

我找到了解决问题的方法。我解析异常的stacktrace,因此得到行号:

//this method gives me the stacktrace as string
String trace = helperService.stacktraceToString(e)
String line = ""
trace.eachLine {
    if (it.contains("<eval>")) {
        line = " at line " + it.substring(it.lastIndexOf("<eval>:"), it.length() -1).replace("<eval>:", "")
    }
}
//此方法将stacktrace作为字符串提供给我
字符串跟踪=helperService.stacktraceToString(e)
字符串行=“”
trace.eachLine{
if(它包含(“”){
line=“at line”+it.substring(it.lastIndexOf(“:”),it.length()-1)。替换(“:”,“”)
}
}

是否有一个选项可以记录执行的每一行?