zoukankan      html  css  js  c++  java
  • Python函数-异常处理

    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()
  • 相关阅读:
    Windows下升级Zabbix Agent
    mariadb+haproxy实现负载均衡(一)
    mariadb数据库galera下添加新的服务器节点
    1044/1045
    mariadb 离线安装
    CentSO7.6下部署Maridb Galera Cluster 实践记录(一)
    Word 远程调用失败:异常来自 HRESULT:0x800706BE
    CentSO7.6下部署Maridb Galera Cluster 实践记录(二)
    数据结构之双向链表-c语言实现
    数据结构之单链表-c语言实现
  • 原文地址:https://www.cnblogs.com/ccxm/p/13536681.html
Copyright © 2011-2022 走看看