PHP中的应用程序错误与用户错误

时间:2010-03-26 14:25:22

标签: php error-handling

所以经过多次辩论后,我想出了我认为可能是一个有效的计划来处理应用程序/系统错误与用户错误(即验证问题,权限问题等)

应用程序/系统错误将使用自定义错误处理程序(通过set_error_handler())进行处理。根据错误的严重程度,用户可能会被重定向到一般错误页面(即致命错误),或者可能只是默默地记录错误(即E_WARNING)。

这些错误很可能是由用户控制之外的问题引起的(缺少文件,错误的逻辑等)。

第二组错误是用户生成的错误。这些可能不会自动触发错误但会被视为一个错误。在这些情况下,我决定使用trigger_error()函数,并且通常会抛出一个减弱或通知,这将由错误处理程序静默记录。之后,由开发人员将用户重定向到另一个页面或显示向用户提供某种更有意义的信息。

这样就可以记录任何类型的错误,但是用户错误仍然允许开发人员以自己的方式自由处理它。即将它们重新定位回形式,并完全重新填充,并显示出错的信息。

有没有人看到这个有什么问题,或者有更直观的方式?我的错误处理方法通常是每个人都有自己的方式,但必须有一种方法。

1 个答案:

答案 0 :(得分:2)

我真的更喜欢exceptions而不是old-fashion error handling。优点包括:

  • 您可以延迟错误处理:在错误发生的那一刻,无需做出决定(停止或继续,显示消息或日志)。这允许更清晰的代码和更清晰的输出(当你进行fopen调用时,你不能总是打印消息。)

  • 您可以对类似错误进行分组并统一其处理方式。例如:当您阅读文件时,有许多可能的错误情况,您实际上并不需要单独考虑它们。

  • 您可以为您描述的属于正常工作流程的错误条件创建自定义例外;将UserNotAllowedExceptionE_USER_ERROR进行比较。

convert regular errors to exceptions还有一些技巧。