Проверить код JavaScript

Я использую Java ScriptEngine для выполнения кода JavaScript. Я использую интерфейс Invocable, поэтому я могу использовать код сценария как обычный объект Java, реализующий интерфейс Java.

Если код JavaScript

  • является недействительным
  • не соответствует интерфейсу (отсутствуют методы, неверный тип возвращаемого значения, генерируется исключение и т. д.)

Я получаю внутреннее исключение от Rhino или UndeclaredThrowableException при выполнении кода. Оба являются исключениями RuntimeException, которые «не разрешено» перехватывать.

Есть ли способ проверить код перед выполнением? Или я должен нарушить правило здесь и поймать RuntimeExceptions? Это сработало бы для меня, но какой самый элегантный способ?


person Thomas    schedule 14.01.2010    source источник


Ответы (3)


Есть ли способ проверить код перед выполнением?

Нет. JavaScript имеет свободный тип, не имеет концепции интерфейсов и интерпретируется на лету.

Лучшее, что вы можете сделать, не разрабатывая собственную структуру проверки, — это проверить ее на наличие синтаксических ошибок с помощью JSLint.

person Kevin    schedule 14.01.2010

Несколько лет спустя... для тех, кто наткнулся на это: вы можете использовать строгий режим, который добавляет больше проверок во время выполнения, используя "use strict";

http://ejohn.org/blog/ecmascript-5-strict-mode-json-and-more/

Некоторые редакторы кода обеспечивают проверку в реальном времени (синтаксис...)

person Christophe Roussy    schedule 14.01.2013

компилятор закрытия выполняет все виды проверки на основе аннотаций.

https://developers.google.com/closure/compiler/docs/js-for-compiler

person Julian    schedule 10.07.2014