Rhino Javascript - 如何为异常堆栈跟踪标记字符串源
Rhino Javascript - how to label a string source for exception stacktrace
我们使用 Rhino Javascript(JDK7 解释模式),在 ScriptEngine.eval(String) 和 java 脚本中大量使用 "eval" 使用 eval(细绳)。我们认识到 eval 可能存在安全问题...但除此之外...
当抛出异常时,它最终被 java 捕获,java 堆栈跟踪打印出如下内容: (#7) in at line number 7.
来源名称未知是有道理的,因为我们只是给它一个字符串来评估。
但是,有没有什么方法可以将标签附加到给定的评估,以便它在堆栈跟踪中提供更好的提示?类似于:
String jsCode = "va z=x+y".....
eval(jsCode, "label1");
因此,当抛出异常时,它会在第 7 行显示类似 : ( Label1) 的内容。
这将使调试和找到问题的根源变得更加容易。
在 JS eval 函数上创建简单包装器:
function evalWithLabel(js, label) {
try {
return eval(js);
} catch(err) {
throw label + ': ' + err;
}
}
我们使用 Rhino Javascript(JDK7 解释模式),在 ScriptEngine.eval(String) 和 java 脚本中大量使用 "eval" 使用 eval(细绳)。我们认识到 eval 可能存在安全问题...但除此之外...
当抛出异常时,它最终被 java 捕获,java 堆栈跟踪打印出如下内容: (#7) in at line number 7.
来源名称未知是有道理的,因为我们只是给它一个字符串来评估。
但是,有没有什么方法可以将标签附加到给定的评估,以便它在堆栈跟踪中提供更好的提示?类似于:
String jsCode = "va z=x+y".....
eval(jsCode, "label1");
因此,当抛出异常时,它会在第 7 行显示类似 : ( Label1) 的内容。
这将使调试和找到问题的根源变得更加容易。
在 JS eval 函数上创建简单包装器:
function evalWithLabel(js, label) {
try {
return eval(js);
} catch(err) {
throw label + ': ' + err;
}
}