我正在处理的代码在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 %]
但这对于应该是一件简单的事情来说感觉太冗长了。有没有更好的方法我不知道这样做?
答案 0 :(得分:8)
好主意!从来没有想过它,但现在将为我自己的系统实现解决方案。
它可以开箱即用! stderr过滤器将块的输出打印到STDERR:
[% FILTER stderr %]
Found a big problem
[% END %]
不需要MVC,没有代码,只有更好的生活。
更高级的方法是在控制器中创建一个对象,该对象的作用是记录错误,因此它可以更智能地处理它们:
[%logger.warn('大问题')%]
它可以通过电子邮件发送,将它们放入日志中,或者发送给您不喜欢的开发者。 ; - )