Я использую Java ScriptEngine для выполнения кода JavaScript. Я использую интерфейс Invocable, поэтому я могу использовать код сценария как обычный объект Java, реализующий интерфейс Java.
Если код JavaScript
- является недействительным
- не соответствует интерфейсу (отсутствуют методы, неверный тип возвращаемого значения, генерируется исключение и т. д.)
Я получаю внутреннее исключение от Rhino или UndeclaredThrowableException при выполнении кода. Оба являются исключениями RuntimeException, которые «не разрешено» перехватывать.
Есть ли способ проверить код перед выполнением? Или я должен нарушить правило здесь и поймать RuntimeExceptions? Это сработало бы для меня, но какой самый элегантный способ?