2

我试图确保我的 Rhino 脚本(在 Java 6 下运行)是严格的,这样如果脚本开发人员拼错了一个表达式,我希望抛出一个异常。目前发生的是表达式简单地计算为“未定义”。

现在根据 Mozilla org https://developer.mozilla.org/en/New_in_Rhino_1.6R6,有一些功能可以在上下文中启用严格检查。我找不到一个可行的例子。

到目前为止,我所做的是编写一个类来扩展 ContextFactory,然后重写 hasFeature 方法。

public class ScriptContextFactory extends ContextFactory {

    protected boolean hasFeature(Context context, int featureIndex) {

        switch (featureIndex) {
            case Context.FEATURE_STRICT_EVAL:
                return true;

            case Context.FEATURE_STRICT_VARS:
                return true;
        }

        return super.hasFeature(context, featureIndex);
    }
  }

然后在 Main 我将我的设置为默认值。

ContextFactory.initGlobal(new ScriptContextFactory());

我得到一个非法的状态异常。:(

关于它如何工作的任何想法或示例?

TIA

4

1 回答 1

2

如果您Context.enter()在打电话之前这样做,请initGlobal()尝试颠倒订单。

于 2010-07-19T18:48:13.790 回答