关于异常处理

关于异常处理

请问redis的异常处理为什么都是从创建完链接才开始捕lianjie获异常的

不会有创建链接失败的可能么?比如说连接池里没有可用连接了

正在回答

登陆购买课程后可参与讨论,去登陆

2回答

同学你好:

同学可以自己在连接数据库时做一个异常捕获。

关于没有可用连接,关键字finally的作用:在该代码块下的代码,不管程序执行过程中发生什么情况下都会去执行。

因此del con这行代码,不管发生什么情况,都会将当前连接归还,因此不会出现没有可用连接的情况。

http://img1.sycdn.imooc.com//climg/5dd507a70975972109720277.jpg

如果我解决了同学的问题,请采纳!学习愉快^_^。

  • P番薯oTATo 提问者 #1
    老师,我在回复中添了一段代码,如果我这么写会不会有什么瑕疵
    2019-11-20 18:04:59
提问者 P番薯oTATo 2019-11-20 18:04:01
import redis
from redis_db import pool

try:
    con = redis.Redis(
        connection_pool=pool
    )

    con.rpush('city', 'Berlin', 'Paris', 'Peking', 'Tokyo')
    con.lpop('city')
    city_list = con.lrange('city', 0, -1)
    for city in city_list:
        print(city.decode('utf-8'))

    del con


except Exception as e:
    if 'con' in dir():
        del con
    print(e)


  • 同学你好:同学直接将创建连接对象(con)放到try的代码块儿下,con成为局部变量,在except下的con也是局部变量,虽然可以使用,但是产生变量引用的冲突。同学可以在连接redis数据库(redis_db.py)时做一个异常捕获。在该文件中直接创建全局变量con即可。其他没有问题。学习愉快^_^。
    2019-11-20 18:18:50
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师