Rhino:检索行号和列号

时间:2013-04-17 12:52:15

标签: rhino

我正在运行自己的代理对象,它扩展了org.mozilla.javascript.ScriptableObject。 我也有自己的功能,扩展了org.mozilla.javascript.Function。

我希望在这里抛出任何异常,返回行号,如果可能的话,返回它们在评估脚本中出现的列号。这可能吗?我只能访问上下文和范围。

1 个答案:

答案 0 :(得分:1)

每当从脚本抛出异常时,Rhino都会抛出已经有行号和列号的RhinoException(以及更多)。但是,当您执行脚本时,您需要提供Rhino将用作起始行号的行号。发生异常/错误的实际行号将相对于此数字。所以有一点是这样的:

//-- Define a simple test script to test if things are working or not.
String testScript = "function simpleJavascriptFunction() {" +
                    "  this line has syntax error." +
                    "}" +
                    "simpleJavascriptFunction();";
//-- Compile the test script.
Script compiledScript = Context.getCurrentContext().compileString(testScript, "My Test Script", 2, null);
//-- Execute the test script.
compiledScript.exec(Context.getCurrentContext(), anyJavascriptScope);

在上面的代码中,起始行号设置为2(对compileString()的调用的第三个参数)。执行此操作时,Rhino将抛出一个RhinoException,它将lineNumber属性设置为值'3'(第一行被视为我们传递2的第二行b / c)。

希望这有帮助。