我正在玩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();
}
?>
答案 0 :(得分:2)
_RETURN
将错误对象作为函数的返回值返回:
$error = $cache->get(..);
$error = $cache->save(..);
您可以使用
检查是否是错误$retval = $cache->get(..);
if (PEAR::isError($retval)) {
echo $retval->getMessage() . "\n";
}
或者,您可以通过设置CACHE_LITE_ERROR_EXCEPTION
或PEAR_ERROR_EXCEPTION