gpt4 book ai didi

mongodb - 如何捕获 Perl MongoDB 驱动程序的连接错误?

转载 作者:可可西里 更新时间:2023-11-01 09:14:49 25 4
gpt4 key购买 nike

我正在使用 official Perl driver与 mongodb 一起工作。为了捕获和处理错误,Try::TinySafe::Isa 模块是 recommended .但是,它没有按预期工作。请检查下面的代码,根据文档应该可以工作,但实际上它不起作用:

use MongoDB;
use Try::Tiny;
use Safe::Isa;

my $client;

try {
$client = MongoDB->connect('mongodb://localhost');
$client->connect;
} catch {
warn "caught error: $_";
};

my $collection = $client->ns('foo.bar');

try {
my $all = $collection->find;
} catch {
warn "2 - caught error: $_";;
};

就根据文档自动建立连接而言,connect() 不会出现异常。但对要求也不异常(exception)!我还添加了 $client->connect 字符串到 force连接,但同样也不异常(exception)。我在没有安装 mongodb 且没有运行 mongodb docker 容器的机器上运行这个脚本,所以肯定会出现异常。

有人可以解释我做错了什么吗?

最佳答案

这是一个微妙的问题。 find 返回游标对象但不会立即发出查询。来自 MongoDB::Collection 的文档:

Note, a MongoDB::Cursor object holds the query and does not issue the
query to the server until the `result` method is called on it or until
an iterator method like `next` is called.

关于mongodb - 如何捕获 Perl MongoDB 驱动程序的连接错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44074890/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com