在iterator_to_array()
实例上使用MongoCursor
可以在PHP 5.3中抛出异常吗?换句话说,我是否需要在try-catch语句中对iterator_to_array()
个实例进行MongoCursor
调用?
如,
$mongo = new Mongo();
$mongo_db = $mongo['my_database'];
$mongo_coll = $mongo_db['my_collection'];
// This
$cursor = $mongo_coll->find();
$documents = iterator_to_array($cursor);
// Versus this.
$cursor = $mongo_coll->find();
try {
$documents = iterator_to_array($cursor);
} catch (Exception $e) {
//...
}
答案 0 :(得分:1)
iterator_to_array()
可以抛出异常,因为它会调用next()。
答案 1 :(得分:0)
我认为此页面上http://www.php.net/manual/en/mongo.queries.php的第一条评论会引起您的兴趣,但不知道当您查看它时它是否会是第一条,所以这是交易。
您可以使用$cursor->valid()
检查光标是否有效。
并且评论说你可能必须在收到光标后回放光标,因为它有时候在收到时没有倒回。
...
$cursor = $mongo_coll->find();
$cursor->rewind();
if ($cursor->valid()) {
$documents = iterator_to_array($cursor);
}
上面的try catch块的优点是try catch块可能抛出异常,而你可以在光标实际有效时使用光标。
答案 2 :(得分:0)
Find方法返回Traversable对象或抛出异常。
Iterator_to_array正在接受Traversable对象。
只有在迭代期间Mongo驱动程序或Mongo中发生了非常糟糕的事情时才会出现异常。也许是断线。