5

我正在处理的代码在模板中有一堆TRY/CATCH块。Template::Toolkit它们看起来像这样:

[% TRY; x = OBJ.method(data); CATCH; "<!-- error: $error -->"; END %]

这从两个方面来说是不好的。首先,错误被插入到交给用户的 HTML 中,其次,开发人员很难找到错误。在我看来,所有错误都应该记录到同一个错误日志中。现在我通过warn函数来​​做到这一点。我已将上面的代码更改为

[% TRY %]
    [% x = OBJ.foo(data) %]
[% CATCH %]
    [% RAWPERL %]
        warn "error calling method foo on a bar object: " . $stash->get("error");
    [% END %]
[% END %]

但这对于应该是一件简单的事情来说感觉太冗长了。有没有更好的方法我不知道这样做?

4

1 回答 1

8

很好的主意!我自己从来没有想过,但现在将为我自己的系统实施解决方案。

开箱即用!stderr 过滤器将块的输出打印到 STDERR:

[% FILTER stderr %]  
   Found a big problem
[% END %]

无需 MVC,无需代码,只需更好的生活。

一种更高级的方法是在控制器中创建一个对象,该对象的工作是记录错误,因此它可以更智能地处理它们:

[% logger.warn('大问题') %]

它可以通过电子邮件发送给他们,将它们放入日志中,或者给你不喜欢的开发者发送短信。;-)

于 2011-09-23T19:17:59.340 回答