如何捕获致命错误

时间:2013-09-20 06:12:17

标签: php mysql

我正在使用MYSQL数据库编写PHP程序。我想捕获错误并给用户定义错误而不是系统错误。我使用try和catch来处理异常但是尝试和catch没有捕获致命错误。我使用过set_exception_handler但它对我不起作用。告诉我如何捕获致命错误?

3 个答案:

答案 0 :(得分:3)

答案 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

输出:

  

发生了一些错误。请稍后再试。