随笔 - 42,  文章 - 0,  评论 - 0,  阅读 - 12809

1、异常处理

复制代码
# 例:
l = [1, 2, 3]
d = {}

try:
    # print(l[4])
    print(d['name'])
# except IndexError as e:  #下标越界
#     print("下标不存在")
#     print(e)
# except KeyError as e:   #key不存在
#     print("key不存在")
#     print(e)
# 或者如下:
except Exception as e:   #Exception所有异常都可以捕获
    print("出异常了", e)
else:
    print("不出异常的时候走到这里")
finally:
    print("什么时候走这里呢")  # 有无异常都会走finally
复制代码

2、return和finally的纠缠

复制代码
def test():
    try:
        1 / 0
    except Exception:
        print('error')
        return
    finally:
        print('abc')
test()
复制代码

注:

  • 在方法return动作之前,return语句执行之后,
  • 若finally中再有return语句,则此方法以finally的return作为最终返回,
  • 若finally中无return语句,则此方法以try的return作为最终返回。
  • 其实return与finally并没有明显的谁强谁弱,
  • 在执行时,是return语句先把返回值写入但内存中,
  • 然后停下来等待finally语句块执行完,return再执行后面的一段。

3、小练习(连接数据库的异常处理

复制代码
import pymysql

mysql_info = {
    'host': '118.24.*.**',  #保密
    'port': 3306,
    'db': 'jxz',
    'password': '123456',
    'charset': 'utf8',
    'autocommit': True,
    'user': 'jxz'
}

def op_db(sql, one_tag=True):
    try:
        connect = pymysql.connect(**mysql_info)  #**后加字典,表示key=value格式
    except Exception as e:
        print("数据库链接失败",e)
        return "001"
    else:
        cur = connect.cursor(pymysql.cursors.DictCursor)
        try:
            cur.execute(sql)
        except Exception as e:
            print('执行sql出错',e)
            return "002"
        else:
            if one_tag:
                result = cur.fetchone()  # {}
            else:
                result = cur.fetchall()  # []
            return result
        finally:
            cur.close()
            connect.close()  #在连接数据后无论是否出现异常均需要关闭游标和连接

# op_db()
复制代码

 

posted on   彩彩常  阅读(224)  评论(0编辑  收藏  举报
编辑推荐:
· 软件产品开发中常见的10个问题及处理方法
· .NET 原生驾驭 AI 新基建实战系列:向量数据库的应用与畅想
· 从问题排查到源码分析:ActiveMQ消费端频繁日志刷屏的秘密
· 一次Java后端服务间歇性响应慢的问题排查记录
· dotnet 源代码生成器分析器入门
阅读排行:
· ThreeJs-16智慧城市项目(重磅以及未来发展ai)
· .NET 原生驾驭 AI 新基建实战系列(一):向量数据库的应用与畅想
· Browser-use 详细介绍&使用文档
· 软件产品开发中常见的10个问题及处理方法
· Vite CVE-2025-30208 安全漏洞

< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5
点击右上角即可分享
微信分享提示