gpt4 book ai didi

perl - 如何在 Template::Toolkits CATCH block 中抛出警告?

转载 作者:行者123 更新时间:2023-12-04 17:56:47 26 4
gpt4 key购买 nike

我正在处理的代码有一堆 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 %]

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

最佳答案

好点子!我自己从来没有想过,但现在会为我自己的系统实现解决方案。

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

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

不需要MVC,不需要代码,只是更好的生活。

一个更高级的方法是在你的 Controller 中创建一个对象,它的工作是记录错误,所以它可以更智能地处理它们:

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

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

关于perl - 如何在 Template::Toolkits CATCH block 中抛出警告?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7403267/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com