如何处理Freemarker中从Java抛出的异常?

时间:2016-12-06 09:21:54

标签: java freemarker

我有一个Java函数,比如说method1(),它会在某些条件下引发异常,比如条件A.我从我的FTL文件中调用该函数,满足条件A.现在我在FTL中遇到模板错误,说上面的函数引发了异常。就像我们使用try-catch处理Java中的异常一样,我想在我的FTL中使用类似的东西。

这与我的FTL代码类似。

<#-- @ftlvariable name="someUtilClass" type="com.some.package.SomeUtilClass" -->

    <#attempt>
        <#assign x = someUtilClass.method1() />
    <#recover>
        <#assign x = '' />
    </#recover>

我正在使用Freemarker 2.3.20。

感谢。

1 个答案:

答案 0 :(得分:1)

您不应该在模板中处理异常,除非我们计算#attempt - #recover,否则就没有模板语言功能。

#attempt - #recover开始,它确实捕获了异常(我假设),所以当你说它不起作用时,我不确定你的意思。但是,如果抛出该异常是正常操作的一部分,那么它将不是一个合适的解决方案,因为它会在允许模板处理继续之前将其记录为错误。它还捕获所有类型的异常,而不仅仅是您通常期望的异常。它适用于失败场景,您不希望整个页面因为某些面板背后的服务失败而失败。