处理前端网站错误的最佳方法是什么?类似于 twitter、reddit 等,它们有一个很好的“出错了”页面。我想要:
- 检测错误并得到通知,即使它只是一个日志文件
- 显示自定义错误页面,例如失败鲸鱼或类似页面,因此很明显出现了问题,而不是什么都不显示,或者看起来很可怕的错误。
理想情况下,任何阻止用户查看站点的东西,例如致命错误、自定义异常、mysql 关闭、随机 500 错误等,都应该显示自定义错误页面。
致命错误
PHP:自定义错误处理程序 - 处理解析和致命错误- 工作正常,但如果这发生在脚本末尾,并且它已经输出了一些东西,这将不起作用
非致命错误
http://davidwalsh.name/custom-error-handling-php
MySQL 错误
理想情况下需要涵盖从简单的查询错误到服务器不存在的所有内容。想象一下它就像检测我的数据库类中的错误并调用重定向到/调用错误方法一样简单
服务器错误
这是我应该在PHP或Apache或两者中做的事情吗?
此刻的代码
目前,我从各种其他 SO 的混合中获得了以下内容,但是在页面的其余部分加载后才会报告致命错误。
任何人都对可以与上述所有内容一起使用的东西有任何想法吗?
<?
function xhandler($number,$string,$file,$line,$context)
{
//log to text file?
//log to xml file?
//store in database?
//whatever you want to do!
echo "<h1>here be dragons!</h1>";
echo "$number,$string,$file,$line,$context";
exit();
}
function fatal_handler() {
$errfile = "unknown file";
$errstr = "shutdown";
$errno = E_CORE_ERROR;
$errline = 0;
$error = error_get_last();
if( $error !== NULL) {
$errno = $error["type"];
$errfile = $error["file"];
$errline = $error["line"];
$errstr = $error["message"];
}
echo "<h1>here be dragons!</h1>";
print_r($error);
exit();
}
register_shutdown_function( "fatal_handler" );
set_error_handler('xhandler',E_ALL);
include('show_the_content');
function_that_doesnt_exist();
echo $unterminated_line_of_code
?>