从句法上解析groovy脚本
问题描述:
无法解析(检查语法)groovy代码。 parse()
方法不抛出任何异常,但在执行时会抛出异常从句法上解析groovy脚本
GroovyShell gEngine = new GroovyShell();
gEngine.evaluate("def n; print ddd"); // throws an exception
gEngine.parse("def n; print ddd"); // don't throws Excption
答
从常规API:
分析给定的脚本并返回准备运行
对求值当前绑定一些脚本,并将结果返回
正如他在评论@tim_yates笔记,evaluate
运行脚本,而parse
回不运行它的脚本对象,这就是为什么evaluate
抛出异常:groovy.lang.MissingPropertyException: No such property: ddd
但是如果你运行的parse
返回的脚本就会抛出同样的异常:
GroovyShell gEngine = new GroovyShell()
def script = gEngine.parse("def n; print ddd")
script.run() // throws missingPropertyException
'parse'不会尝试运行脚本,'evaluate'的确如此。该代码在语法上没有问题。但是这是逻辑上的。不确定问题是什么? –
它在运行时抛出异常,它不能在编译时抛出异常,因为我不想让代码执行。 – Kamal
但是这个脚本没问题。 'ddd'可能会在运行时添加到脚本中,所以它会起作用。所以在编译时,它没有错误... –