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

PHP中的应用程序错误与用户错误,php,error-handling,Php,Error Handling,因此,经过反复讨论,我提出了一个我认为有效的计划来处理应用程序/系统错误与用户错误(即验证问题、权限问题等) 应用程序/系统错误将使用自定义错误处理程序(通过set_error_handler()处理)。根据错误的严重程度,用户可能会被重定向到一般错误页面(即致命错误),或者错误可能只是被静默记录(即e_警告) 这些错误很可能是由用户无法控制的问题(文件丢失、逻辑错误等)引起的 第二组错误是用户生成的错误。这些可能不会自动触发错误,但会被视为错误。在这些情况下,我决定使用trigger_erro

因此,经过反复讨论,我提出了一个我认为有效的计划来处理应用程序/系统错误与用户错误(即验证问题、权限问题等)

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

这些错误很可能是由用户无法控制的问题(文件丢失、逻辑错误等)引起的

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

这样,任何类型的错误都会被记录下来,但用户错误仍然允许开发人员自由地以自己的方式处理它。例如,将它们重定向回表单,并完全重新填充,并显示出错的消息

有人认为这有什么不对,或者有更直观的方法吗?我的错误处理方法通常是每个人都有自己的方法,但必须有自己的方法。

我真的更喜欢这种方法。优点包括:

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

  • >p>可以对类似的错误进行分组并统一处理。例如:当你读一个文件时,有很多可能的错误条件,你不需要单独考虑它们。

  • 您可以为您描述的属于正常工作流一部分的错误条件创建自定义异常;将
    UserNotAllowedException
    E\u USER\u error
    进行比较


还有一些技巧。

re:用户生成的错误–对于应用程序开发人员来说,决定什么是“用户生成的错误”可能有点混乱“事实上是这样。更具体地说,非最佳事件是否应视为错误。e、 g.登录例程–如果用户输入无效密码,可能会被视为错误,或者程序流可能会确定应显示新帐户提示。感谢您的帮助。我也在想同样的事情。