在我当前的项目中,我使用普通 HTTP 请求查询 PHP,但也通过 AJAX 查询,有时返回 JSON 格式的数据,有时返回普通文本。当发生错误时,在正常请求中,您会看到错误消息并可以采取一些措施。另一方面,对于 AJAX 请求,您无法确定是否收到错误或您想要的数据,因为它不会直接显示 - 您只会遇到麻烦,因为您的应用程序将不再工作。
所以我想到了一个错误处理系统。我最好的想法是,如果发生错误,则发送 500“内部服务器错误”标头,因此在我的 JS 中,当我发送 AJAX 请求时,我可以简单地以这种方式检查错误并处理它。
不幸的是,PHP 本身并不发送这种类型的标头(例如当您遇到解析错误或代码中出现错误时)。
Can you:
a) 如果发生错误,告诉 PHP 发送 500 之类的标头?或者
b) 使用set_error_handler发送500头然后调用PHP常规错误处理?或者
c) 当 PHP 发生错误时,您能以任何其他方式发送错误标头吗?
我更喜欢使用异常来处理错误。首先,您需要安装 error-to-exception 错误处理程序(http://php.net/manual/en/class.errorexception.php,示例 1),然后将主应用程序代码包装在 try-catch 块中并发送catch 部分中的适当标头。例如:
try {
$myApplication->run();
} catch(Exception $e) {
// log or otherwise register the error
header('HTTP/1.1 500 Internal Server Error');
}
不幸的是,这不适用于所谓的“致命错误”,要处理这些错误,您必须使用这样的愚蠢技巧
ob_start();
register_shutdown_function(function() {
$p = ob_get_contents();
if(preg_match('~Fatal error~', $p))
header('HTTP/1.0 500 Internal Server Error');
});
...your code...
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)