我有一个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。
感谢。
答案 0 :(得分:1)
您不应该在模板中处理异常,除非我们计算#attempt
- #recover
,否则就没有模板语言功能。
从#attempt
- #recover
开始,它确实捕获了异常(我假设),所以当你说它不起作用时,我不确定你的意思。但是,如果抛出该异常是正常操作的一部分,那么它将不是一个合适的解决方案,因为它会在允许模板处理继续之前将其记录为错误。它还捕获所有类型的异常,而不仅仅是您通常期望的异常。它适用于失败场景,您不希望整个页面因为某些面板背后的服务失败而失败。