如何访问Pear Cache_Lite错误对象?

时间:2014-06-25 20:19:02

标签: php exception caching pear

我正在玩Pear的Cache_Lite,看起来很容易使用。我无法理解的一个方面是我如何抛出异常来找出错误是什么。根据文档,在我下面的$ options数组中,我已经尝试了'pearErrorMode' => CACHE_LITE_ERROR_DIE,这将停止脚本并向我显示错误(即,cacheDir不存在,如代码如下)。

但是,我不一定要向用户显示此错误(即我可能会记录它,并给他们一个自定义消息)。然后我认为我可以使用'pearErrorMode' => CACHE_LITE_ERROR_RETURN来返回Pear错误对象。我的印象(显然不正确)是echo $e->getMessage();然后会访问Pear错误对象并将其打印出来。但是,我得到的只是一个空白屏幕。我的问题是,我是如何做一个标准的try / catch,然后访问错误对象?我的代码片段(或多或少是Pear手册中的副本)如下所示:

<?php
    require_once('Cache/Lite.php');
    $id = '123';
    $options = array(
        'cacheDir' => '/oops_I_am_not_a_directory/', //this is the problem line!
        'lifeTime' => 3600
    );
    try {
       $Cache_Lite = new Cache_Lite($options);
       if ($data = $Cache_Lite->get($id)) {
       echo $data;
    } else { 
       $data = "blah";
       $Cache_Lite->save($data);
    }   
    } catch (Exception $e) {
       echo $e->getMessage();   
    }
    ?>

1 个答案:

答案 0 :(得分:2)

_RETURN将错误对象作为函数的返回值返回:

$error = $cache->get(..);
$error = $cache->save(..);

您可以使用

检查是否是错误
$retval = $cache->get(..);
if (PEAR::isError($retval)) {
    echo $retval->getMessage() . "\n";
}

或者,您可以通过设置CACHE_LITE_ERROR_EXCEPTIONPEAR_ERROR_EXCEPTION

使其抛出异常