【发布时间】:2014-10-09 11:56:30
【问题描述】:
如果您的网站捕获到您希望将其作为反馈报告给用户的异常,有什么优雅的方法可以在不遇到这些问题的情况下处理它:
-
错误发生在页面中间,如果你在捕获时直接打印错误消息,它将位于损坏页面中间的某个位置。
-
使用 ob_start() 可以确保您仅在处理完内容并且没有错误后才打印内容,修复了 1) 处的问题,但它会带来最好避免的性能损失。
-
在发现错误后重定向到新的 URL 或相同的 URL 可以很好地工作(例如,如果用户发布错误的密码、错误消息或更严重的情况下重定向到通用页面,则重定向回登录表单,应用程序崩溃错误)。这使您容易出现一系列错误重定向(递归),这将使请求超时,最终使用户或开发人员根本没有明确的错误消息。因此,总是重定向错误,尤其是应用程序崩溃错误,似乎不是一个好主意。
-
我注意到在我的项目中使用没有 ob_start() 的 ob_clean() 可以删除页面上已经回显的内容。但是 php 手册声明它不应该在没有 ob_start() 的情况下工作,它甚至不应该清除回显的 HTML,只清除缓冲区上的内容。这是怎么回事?
-
您可以将所有打印/回显语句保存在 $array = array() 中,而不是 ob_start。据我了解,性能影响较小,但这会使代码难以处理。
感谢帮助
【问题讨论】:
-
首先,如果有一些运行时错误(异常,致命),普通访问者应该能看到。相反,您应该捕获异常并实现将显示一些 访问者友好 文本的错误处理程序(例如 出现意外错误,我们正在努力修复它!)并记录错误/异常,以便您可以真正修复它。如果是用户错误(输入错误),那么您只需在页面某处(在字段下的表单中或消息区域中)显示用户相应的错误消息。
-
是的,我在我的项目中抛出自定义和常规异常,向用户加载适当的消息。然而,问题是如何在不落入上述陷阱之一的情况下显示这些消息
标签: php error-handling user-feedback