如何访问Pear Cache_Lite错误对象?


How does one access the Pear Cache_Lite error object?

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

然而,我不一定想要向用户显示这个错误(也就是说,我可能会记录它,并给他们一个自定义消息)。然后我认为我可以使用'pearErrorMode' => CACHE_LITE_ERROR_RETURN,它应该返回梨错误对象。我的印象(显然不正确)是echo $e->getMessage();将访问Pear错误对象并将其打印出来。然而,我得到的只是一个空白屏幕。那么我的问题是,我如何才能做一个标准的尝试/捕获,然后访问错误对象?我的代码片段(或多或少是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();   
    }
    ?>

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

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

你可以使用

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

或者,您可以通过设置CACHE_LITE_ERROR_EXCEPTIONPEAR_ERROR_EXCEPTION

使其抛出异常