0

如果您的网站捕获到您希望将其作为反馈报告给用户的异常,那么在不遇到这些问题的情况下,有什么优雅的方法可以处理它:

  1. 错误发生在页面中间,如果您在捕获时直接打印错误消息,它将位于破损页面中间的某个位置。

  2. 使用 ob_start() 可以确保您仅在处理完内容并且没有错误后才打印内容,从而解决了 1) 处的问题,但它会带来最好避免的性能损失。

  3. 在捕获错误后重定向到新 URL 或相同的 URL 可以很好地工作(例如,如果用户发布了错误的密码、错误消息,则重定向回登录表单,或者重定向到更严重的通用页面,应用程序崩溃错误)。这使您容易出现重定向错误链(递归),这将使请求超时,最终使用户或开发人员根本没有明确的错误消息。因此,总是重定向错误,尤其是应用程序崩溃错误,似乎是个坏主意。

  4. 我注意到在我的项目上使用没有 ob_start() 的 ob_clean() 可以删除页面上已经回显的内容。但是 php 手册声明它不应该在没有 ob_start() 的情况下工作,它甚至不应该清除回显的 HTML,只清除缓冲区中的内容。这里发生了什么?

  5. 您可以将所有打印/回显语句保存在 $array = array() 中,而不是 ob_start。据我了解,性能影响较小,但这会使代码难以处理。

    感谢帮助

4

1 回答 1

0

我所做的是我有一个包含所需页面的索引,例如,如果您想查看联系页面,您会请求index.php?page=contact

代码看起来像这样

$return_code = 1;
$return_code = include($page.'.php');
if ($return_code != 1) {
    echo '<div class="error">'.$return_code.'</div>';
}

在您的联系页面中,您可以做任何您需要做的事情,如果出现错误并且您想停止执行页面并只显示错误,只需执行 return

<?php
// If an error happens, simply
return "Error text";
?>
于 2014-10-09T12:11:58.880 回答