Mongodb 连接失败,怎么避免抛错影响正常流程

发布于 2022-09-04 17:35:28 字数 372 浏览 23 评论 0

如题

网站mongodb连接不上的时候,就会抛出错误,阻碍了流程正常的运行。

mongodb只用来存log等非关键信息.

所有代码都包了try catch ,不可能每个地方都特殊处理吧?

而且连接失败了,我的代码还是直接 $this->di->mongo->find($param);
即使处理了连接异常,但是有好多代码都是直接用对象->find 这里还是会报错。。
也就是说得包一层find。。。

最终: 我的问题,就是在mongo的connect函数中包一次try catch就行了,这样就不太会被外层的try catch捕捉了。。。 还是有点奇怪,最最外面主函数还有一层try catch为什么就不捕捉了呢。。。

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

廻憶裏菂餘溫 2022-09-11 17:35:28

操作 mongodb 的时候,是不是需要封装一个类,链接 mongodb 的时候就是调用 类的 connect 的方法,记录 log 就是调用类的 log 方法,那么只需要在这个类中处理异常吧。

代码粗糙,意会吧

class mongo
{

    private $isConnect = false;

    function connect()
    {
        try {
            $this->setConnectStatus(true);
        } catch (\Exception $e) {
            $this->setConnectStatus(false);
        }
    }

    function setConnectStatus($bool)
    {
        $this->isConnect = $bool;
    }

    function getConnectStatus()
    {
        return $this->isConnect;
    }

    function log($message)
    {
        if ($this->getConnectStatus()) {

        } else {
            // do nothing
        }
    }
}
你是年少的欢喜 2022-09-11 17:35:28

PHP操作MongoDB的 exception handling没有什么特别的地方,和其他的场景一样,使用try catch来处理。

PHP MongDB client包含了一些exeception的类:

MongoDB\Driver\Exception\AuthenticationException 
MongoDB\Driver\Exception\BulkWriteException 
MongoDB\Driver\Exception\ConnectionException 
MongoDB\Driver\Exception\ConnectionTimeoutException 
MongoDB\Driver\Exception\Exception 
MongoDB\Driver\Exception\ExecutionTimeoutException 
MongoDB\Driver\Exception\InvalidArgumentException 
MongoDB\Driver\Exception\LogicException 
MongoDB\Driver\Exception\RuntimeException 
MongoDB\Driver\Exception\SSLConnectionException 
MongoDB\Driver\Exception\UnexpectedValueException 
MongoDB\Driver\Exception\WriteException 

但是您估计为了简化,只会统一处理MongoDB\Exception\Exception

正如一楼的朋友所言,可以做一些类来封装此类操作使得事情简洁一些。

供参考。

Love MongoDB! Have Fun!

浊酒尽余欢 2022-09-11 17:35:28

既然你所有的地方都用到了它,何不把它封装起来集中处理呢

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文