加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

perl – 如何在Template :: Toolkits CATCH块中发出警告?

发布时间:2020-12-16 06:29:00 所属栏目:大数据 来源:网络整理
导读:我正在处理的代码在Template :: Toolkit模板中有一堆TRY / CATCH块.它们看起来像这样: [% TRY; x = OBJ.method(data); CATCH; "!-- error: $error --"; END %] 从两个角度来看这很糟糕.首先,错误被插入到交给用户的HTML中,其次,很难为开发人员找到错误.在我
我正在处理的代码在Template :: Toolkit模板中有一堆TRY / CATCH块.它们看起来像这样:

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

从两个角度来看这很糟糕.首先,错误被插入到交给用户的HTML中,其次,很难为开发人员找到错误.在我看来,所有错误都应该记录到相同的错误日志中.现在我通过警告功能这样做.我已将上面的代码更改为

[% 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,没有代码,只有更好的生活.

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

[%logger.warn(‘大问题’)%]

它可以通过电子邮件发送,将它们放入日志中,或者发送给您不喜欢的开发人员.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读