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

Eri*_*c C 2 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;
}
Run Code Online (Sandbox Code Playgroud)

rma*_*her 5

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

use MongoCursorException;
use Exception;
Run Code Online (Sandbox Code Playgroud)