java - 在 FreeMarker 中发出错误信号

标签 java templates error-handling freemarker

场景:

  • 我有一个已修复的 Java 程序,它使用 FreeMarker 模板
  • 我是 FreeMarker 模板的编写者。
  • 在我的一个模板中,我想检查一个值,如果超出范围,则向应用程序发出错误信号。

我该怎么做?有attempt/recover类似于 try/catch 的机制,但没有与 throw 等效的机制。 (stop 指令除外)

最佳答案

您可以子类化RuntimeExceptionTemplateException,然后在模板内部抛出该异常并在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();
    }

}

将其添加到数据模型(或作为共享变量添加到#importConfiguration),名称为“throwMyException” ,然后在模板中您可以执行以下操作:

<@throwMyException />

关于java - 在 FreeMarker 中发出错误信号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30089413/

相关文章:

java - 为什么字节总和本身不是字节类型?

java - 在 java 中以编程方式生成 XSD

在测试用例/不同类中调用构造函数时,Java 类值被覆盖

r - R 中具有复杂函数和 plyr 的 tryCatch

javascript - Angular 误差和超时工厂

java - android fb sdk错误

c++ - 将 std::u16string 转换为 std::wstring 而不复制

c++ - 如何在模板中调用类型的析构函数?

c++ - 在 C++ 中使用模板

php - Laravel 处理用户生成的错误