MongoCursorException被抛出,但没有被Lithium中的try / catch捕获

时间:2012-05-21 20:32:10

标签: php mongodb lithium

我正在使用\ lithium \ data \ source \ MongoDB :: update()在安全模式下执行upsert。在某些更新中,由于传递了重复的密钥,因此存在预期的MongoCursorException。下面的try / catch没有捕获到错误,并且它会回弹到我附加到Dispatcher :: run()的ErrorHandler。

try {
    $result = Items::update($record, $conditions, array('upsert' => true, 'safe'   => true));
} catch (MongoCursorException $e) {
    $result = false;
} catch (Exception $e) {
    $result = false;
}

1 个答案:

答案 0 :(得分:5)

您需要将use语句添加到文件的顶部,或者在异常类名称前添加反斜杠,以指示它们来自全局范围而不是命名空间。我更喜欢课堂顶部的use语句。

use MongoCursorException;
use Exception;