我正在使用MYSQL数据库编写PHP程序。我想捕获错误并给用户定义错误而不是系统错误。我使用try和catch来处理异常但是尝试和catch没有捕获致命错误。我使用过set_exception_handler但它对我不起作用。告诉我如何捕获致命错误?
答案 0 :(得分:3)
1)简单
How do I catch a PHP Fatal Error
2)全部抓住
设置用户函数(error_handler)以处理脚本中的错误。
http://php.net/manual/en/function.set-error-handler.php
http://php.net/manual/en/book.errorfunc.php
3)阅读https://barelysufficient.org/2011/03/catching-fatal-errors-in-php/
答案 1 :(得分:1)
无法通过error_handler()直接跟踪致命错误。您需要使用register_shutdown_function()来捕获这些错误。
示例:
<?php
/**
* Checks for a fatal error, work around for set_error_handler not working on fatal errors.
*/
function check_for_fatal()
{
$error = error_get_last();
if ( $error["type"] == E_ERROR )
log_error( $error["type"], $error["message"], $error["file"], $error["line"] );
}
register_shutdown_function( "check_for_fatal" );
?>
答案 2 :(得分:0)
这是PHP手册 [个人测试&amp;作品] 即可。我还没有在这里使用 register_shutdown()
。
<?php
set_error_handler( "log_error" );
set_exception_handler( "log_exception" );
function log_error( $num, $str, $file, $line, $context = null )
{
log_exception( new ErrorException( $str, 0, $num, $file, $line ) );
}
function log_exception( Exception $e )
{
echo "Some Error Occured. Please Try Later.";
exit();
}
require_once("texsss.php");// I am doing a FATAL Error here
输出:
发生了一些错误。请稍后再试。