如果您的网站捕获到您希望将其作为反馈报告给用户的异常,那么在不遇到这些问题的情况下,有什么优雅的方法可以处理它:
错误发生在页面中间,如果您在捕获时直接打印错误消息,它将位于破损页面中间的某个位置。
使用 ob_start() 可以确保您仅在处理完内容并且没有错误后才打印内容,从而解决了 1) 处的问题,但它会带来最好避免的性能损失。
在捕获错误后重定向到新 URL 或相同的 URL 可以很好地工作(例如,如果用户发布了错误的密码、错误消息,则重定向回登录表单,或者重定向到更严重的通用页面,应用程序崩溃错误)。这使您容易出现重定向错误链(递归),这将使请求超时,最终使用户或开发人员根本没有明确的错误消息。因此,总是重定向错误,尤其是应用程序崩溃错误,似乎是个坏主意。
我注意到在我的项目上使用没有 ob_start() 的 ob_clean() 可以删除页面上已经回显的内容。但是 php 手册声明它不应该在没有 ob_start() 的情况下工作,它甚至不应该清除回显的 HTML,只清除缓冲区中的内容。这里发生了什么?
您可以将所有打印/回显语句保存在 $array = array() 中,而不是 ob_start。据我了解,性能影响较小,但这会使代码难以处理。
感谢帮助