php - Mongodb 连接失败,怎么避免抛错影响正常流程
大家讲道理
大家讲道理 2017-04-11 10:24:00
[PHP讨论组]

如题

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

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

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

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

大家讲道理
大家讲道理

光阴似箭催人老,日月如移越少年。

全部回复(3)
怪我咯

操作 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
        }
    }
}
巴扎黑

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!

黄舟

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

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号