我正在使用\ lithium \ data \ source \ mongodb :: update()在安全模式下进行upsert。在一些更新中,由于传递重复密钥,存在预期的mongocursorexception。下面的TRY / CATCH不会捕获错误,并且它泡回到INTERTHANDLER我已附加到Dispatcher :: RUN()。

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

有帮助吗?

解决方案

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

use MongoCursorException;
use Exception;
.

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top