场景:
我怎样才能做到这一点?存在类似于
attempt/recover
的 try/catch
机制,但是没有等效于throw
的机制。 (而不是stop
指令) 最佳答案
您可以将RuntimeException
或TemplateException
子类化,然后将该异常抛出到模板中并在Template.process
之外捕获它。要抛出异常,您可以创建一个自定义指令,例如:
public class ThrowMyExceptionDirective implements TemplateDirectiveModel {
@Override
public void execute(Environment env, Map params, TemplateModel[] loopVars, TemplateDirectiveBody body)
throws TemplateException, IOException {
throw new MyTemplateException();
}
}
将其添加到名称为
#import
的数据模型(或作为共享变量的Configuration
或"throwMyException"
)中,然后在模板中执行以下操作:<@throwMyException />