【发布时间】:2012-09-27 09:19:17
【问题描述】:
在开发 php web 系统时,将 E_ALL | E_STRICT 设置为 error_reporting 并处理包括通知错误在内的所有类型的错误是一种很好的做法。
但是在发布的系统中,发生通知错误时我应该停止系统吗?
或者我应该仅在发生 E_ERROR 时停止系统并忽略所有其他错误,例如 E_WARNING、E_NOTICE 或 E_STRICT?
我应该在我的自定义错误处理程序中处理哪些类型的错误并停止(退出)系统?
【问题讨论】:
-
警告绝对应该停止系统(但不要留下原始的错误/异常处理程序,编写自己的不泄露任何错误信息的处理程序)。较小的错误级别不太确定,但您至少应该记录它们并将报告邮寄给自己 - 这将激励您修复它们:)
-
@DCoder 感谢您的好建议!你能告诉我为什么在 E_WARNING 发生时你应该停止系统吗?
-
在大多数情况下,正确性比高可用性更重要,“快速失败”比“无论如何继续前进”更可取。警告通常意味着事情真的出了问题,继续前进只会让事情变得更糟。考虑这个网站上最常见的问题 - "mysql_fetch_ expects parameter..., boolean given"。如果您没有在第一次警告时停止脚本,您将获得一长串重复警告,甚至可能通过在进一步处理中使用失败查询的结果来弄乱其他数据。
-
@DCoder 感谢您的评论。当出现警告时,我将停止我的系统。
标签: php