有:
如何验证对象( #if )并失败(停止进一步处理),以便可以轻松追踪失败的地方(比如在Java中抛出异常)。
我正在寻找类似的东西:
#if ( ! $context.treasureMap.containsKey('gold'))
#fail('no golden treasure here')
#end
背景
我正在写一个maven网站页面。速度上下文由maven注入并包含POM信息。我想测试有效pom中某些信息的存在。当信息不可用时,我想失败。
要求
试过
#evaluate('#end')
又名语法错误#end
最能描述我的意图)基本上我想要的是什么。失败处理和maven构建但错误消息不会导致失败位置:
ParseException: Encountered "#end" at line 1, column 1.
。答案 0 :(得分:0)
您需要进行产生异常的方法调用。请参阅explanation:
在Velocity中唯一可能遇到麻烦的地方是调用一个在运行时抛出异常的方法。例如,这个VTL定义了一个String $ foo然后尝试调用它的substring()方法就会抛出一个IndexOutOfBoundsException:
#set ($foo = "bar")
#set ($bar = $foo.substring(0,10))
当抛出异常时,解析器将停止处理并将该异常抛出堆栈树,在堆栈树中可以捕获导致解析器执行的方法。此时,可以优雅地处理异常。