zoukankan      html  css  js  c++  java
  • Python 异常处理 day7

    什么是异常?

    异常即是一个事件,该事件会在程序执行过程中发生,影响了程序的正常执行。

    一般情况下,在Python无法正常处理程序时就会发生一个异常。

    异常是Python对象,表示一个错误。

    当Python脚本发生异常时我们需要捕获处理它,否则程序会终止执行。

    异常处理

    捕捉异常可以使用try/except语句。

    try/except语句用来检测try语句块中的错误,从而让except语句捕获异常信息并处理。

    如果你不想在异常发生时结束你的程序,只需在try里捕获它。

    语法:

    以下为简单的try....except...else的语法:

    try:
    <语句>        #运行别的代码
    except <名字><语句>        #如果在try部份引发了'name'异常
    except <名字>,<数据>:
    <语句>        #如果引发了'name'异常,获得附加的数据
    else:
    <语句>        #如果没有异常发生

    1、 try except Exception, 这种是不管发生的何种错误,都能捕获, 缺点是不能细节错误的类型

    2、 try except  ValueError as e, 这种是能捕获具体的类型错误,更好的细分提示信息。

    举例:写一个除法的异常处理

    import traceback
    
    a = input('除数:')
    b = input('被除数:')
    
    try:
        a = int(a)
        b = int(b)
        result = a/b
    except ZeroDivisionError:#可以对python常见对异常做处理,当出现异常是会捕捉第一个异常
        print('除数不能为0')
    except Exception as e:  #Exception可以代表任意异常,异常都可以被捕捉到
        print('错误信息',e)
        # print(traceback.format_exc())  # 异常具体信息,可将此写到日志中
        print('出异常了')
    else:
        print('结算结果为:',result)
    finally:
        print('程序已完成')#不管出错或没有出错,都会执行它,也不是必须写的

     执行结果:

    (1)当被除数为0时:

     

    (2)当除数不为整数时:

    举例:将连接数据库的方法做异常处理

    def op_mysql(sql, many_tag=False):
        try:
            conn = pymysql.connect(host='118.24.3.40', user='jxz', password='123456',
                                   db='jxz', port=3306, charset='utf8',
                                   autocommit=True)
        except Exception as e:
            print('连接出错了')
        else:
            cur = conn.cursor(pymysql.cursors.DictCursor)
            try:
                cur.execute(sql)
            except Exception as e:
                print('sql语句出错了')
            else:
                if many_tag:
                    result = cur.fetchall()
                else:
                    result = cur.fetchone()
                return result
            finally:
                cur.close()
                conn.close()
    
    op_mysql('sssss')#此处执行的非正确sql语句,会抛异常sql语句出错了;若连接connect中信息错误会抛连接出错异常
  • 相关阅读:
    [笔记]JavaScript 秘密花园
    jQuery效果之jQuery Color animation 色彩动画扩展
    【vue】常见开发知识点与问题整理(持续更新)
    JS ES6中的箭头函数(Arrow Functions)使用
    JS之console.log详解以及兄弟姐们邻居方法扩展
    字符编码ASCII、Unicode 、UTF-8 及实例汉字与Unicode码的相互转化
    JS之表单提交时编码类型enctype详解
    JS之onunload、onbeforeunload事件详解
    《从零开始学习jQuery》:用jQuery操作元素的属性与样式
    vue+vuecli+webpack中使用mockjs模拟后端数据
  • 原文地址:https://www.cnblogs.com/candysalty/p/11175987.html
Copyright © 2011-2022 走看看