5

我使用 Java 的 ScriptEngine 来执行 JavaScript 代码。我使用 Invocable 接口,以便可以将脚本代码用作实现 Java 接口的普通 Java 对象。

如果 JavaScript 代码

  • 是无效的
  • 不遵循接口(缺少方法、错误的返回类型、抛出异常等)

执行代码时,我从 Rhino 收到内部异常或 UndeclaredThrowableException。两者都是 RuntimeExceptions,它们是“不允许”捕获的。

有没有办法在执行之前验证代码?还是我必须在这里打破规则并捕获 RuntimeExceptions?这对我有用,但最优雅的方式是什么?

4

3 回答 3

2

有没有办法在执行之前验证代码?

不,JavaScript 是松散类型的,没有接口的概念,并且是动态解释的。

在不设计自己的验证框架的情况下,您能做的最好的事情就是使用JSLint检查它的语法错误。

于 2010-01-14T15:33:55.143 回答
1

几年后......对于其他偶然发现这一点的人:您可以使用严格模式,通过使用添加更多运行时检查"use strict";

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

一些代码编辑器提供实时验证(语法...)

于 2013-01-14T11:14:43.850 回答
0

闭包编译器基于注解进行各种验证。

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

于 2014-07-10T10:00:21.757 回答