2010-01-14 5 views
4

J'utilise Java ScriptEngine pour exécuter du code JavaScript. J'utilise l'interface Invocable, de sorte que je puisse utiliser le code de script comme un objet Java normal implémentant une interface Java.Valider le code JavaScript

Si le code JavaScript

  • est invalide
  • ne suit pas l'interface (méthodes manquantes, un mauvais type de retour, déclenche une exception, etc.)

je reçois une exception interne de Rhino ou une exception UndeclaredThrowableException lors de l'exécution du code. Les deux sont RuntimeExceptions, qui ne sont pas "autorisés" à attraper.

Existe-t-il un moyen de valider le code avant l'exécution? Ou dois-je enfreindre la règle ici et attraper RuntimeExceptions? Cela fonctionnerait pour moi, mais quelle est la manière la plus élégante?

Répondre

2

Existe-t-il un moyen de valider le code avant l'exécution?

Non. JavaScript est faiblement typé, n'a pas de concept d'interface et est interprété à la volée. Sans la conception de votre propre cadre de validation, le mieux que vous puissiez faire est de vérifier les erreurs de syntaxe avec JSLint.

+0

l'URL n'est plus valide, http://www.jslint.com/ devrait fonctionner. –

1

Quelques années plus tard ... pour les autres qui trébuchent sur ce point: Vous pouvez utiliser le mode strict qui ajoute plus de contrôles d'exécution en utilisant "use strict";

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

Certains éditeurs de code fournissent une validation en temps réel (syntaxe. ..)