提前感谢大家。
我一直在做一些关于错误处理的研究,但我觉得我对我应该做什么没有深入的了解。
前言:我的代码在 Apache 中并在浏览器中执行,我的目标不包括命令行执行。
我希望 CGI::Carp (fatalsToBrowser) 的行为能够捕获输出并能够将其扔到我自己的模板页面中,通过电子邮件发送等...我确实注意到 fatalsToBrowser 不起作用与 mod_perl。有谁知道为什么?Apache/mod_perl 是如何阻碍的?
第一个目标:如果代码是用 mod_perl 或 mod_cgi 执行的,我想把一些东西放在一起。
第二个目标:我想要一个高级方法来捕获类似于 .NET 的 Application_Error (在 global.asax 中)和 PHP 的 set_exception_handler() 和 set_error_handler() 方法的所有错误。这些允许您在引发错误时进行控制,而无需将代码包装在凌乱的/gross try-catch 语句中。
我读过/评论过的东西:
1.) Perl 中的 OO 异常处理,但不是我想要的。我想抓住的大部分东西都是死()。下一个链接还说这篇文章已过时且已弃用。
2.) Perl: $SIG{__DIE__}, eval { } 和 stack trace,但我并没有从中得到太多与我的目标相关的东西。
3.) 实用模式 Perl (O'Reilly),第 21 章“错误处理和调试”。谢天谢地,我所有的 perl 代码都使用了 strict 并启用了警告,并且第 6 章“使用 mod_perl 进行编码”中提到的最重要的事情已经完成。
4.) 我翻阅了“Learning Perl”、“Perl Cookbook”、“Programming Perl”和“Higher Order Perl”中的目录,并没有发现任何让我印象深刻的东西。如果你认为我错过了什么,请告诉我。:)
我不记得在哪里(也许在“实用 mod_perl”中,但我读过你不应该与 $SIG{__DIE__}.