set_exception_handler无法正常工作

时间:2015-07-16 21:21:37

标签: php exception

我目前正在开发一个具有自定义错误处理的小型网站(或者更确切地说,错误可视化),并且我遇到了涉及这两个错误的特定功能的问题和异常捕获。

所以,我有这段代码:

<?

$query = SQL::Query("SELECT * FROM sitevars");

if ( !$query )
{
    Kernel::Log('Could not retrieve sitevars.', 3, true);
    return false;
}

正如您所看到的,如果查询为false,则应该使用Kernel::Log方法如果第三个参数等于true,那么负责启动异常的Kernel::Log块被写为如下:

<?

if ( $kill )
{
    $backtrace = debug_backtrace();
    $caller = array_shift($backtrace);

    echo "test";

    throw new Exception($message." near line ".$caller['line']." on file ".$caller['file']);
}

现在,问题在于,即使打印了test,异常处理程序也会被 调用。我在__construct

Kernel方法上设置了异常处理程序
<?

public function __construct()
{
    global $config;

    self::$modList = array('Kernel');

    spl_autoload_register('Kernel::LoadModule');
    register_shutdown_function('Kernel::Shutdown');

    set_exception_handler('Kernel::Exception');     
    set_error_handler('Kernel::Error', E_ALL);
}

现在,我已经触发了其他文件的错误,所以我知道至少错误处理程序正在运行,但即使我已经对各种文件执行了throw new Exception('test'),也没有异常被捕获。

为什么会发生这种情况?

0 个答案:

没有答案