2013-04-17 3 views
1

Я запускаю свои собственные прокси-объекты, которые расширяют org.mozilla.javascript.ScriptableObject. У меня также есть свои функции, которые расширяют org.mozilla.javascript.Function.Rhino: Получение строки No и Column No

Мое желание состоит в том, чтобы исключить любые исключения, возвращенные в строке no и, если возможно, номер столбца, в котором они произошли в оцениваемом скрипте. Это возможно? У меня есть доступ к контексту и области.

ответ

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» (первая строка рассматривается как вторая строка b/c, которую мы передали 2).

Надеюсь, это поможет.

+0

На самом деле, я думаю, что я за, невозможно. Я не на самом деле вызываю скрипт, но, скорее, носорог вызывает функцию на моем объекте –

Смежные вопросы