zoukankan      html  css  js  c++  java
  • python-异常处理总结

    一、异常处理

    在程序运行的过程中,总会遇到各种各样的错误。程序一出错就停止运行了,下面的代码就不能运行了;这时候就需要捕捉异常,通过捕捉异常,再去做对应的处理。

    e.g:
    info = {
        "id":1,
        "name":"小黑",
        "sex":"nan"
    }
    choice = input("请输入你要查看的属性:")
    print(info[choice]())   #非函数不能调用

    像这种情况我们就需要捕捉异常;捕捉异常使用try....except....关键字,就是你在写代码的时候,先要考虑到这段代码可能会出现什么样的错误,然后做对应的处理,try里面是可能出错的代码,except里面是出错了要执行的代码;下面是我们改进后的代码:

    try :
        print(info[choice]())
        # print(type(info[choice]))
    except Exception  as  e:        #除去,如果出异常再怎么处理
    #except Exception ,e:    python2
        #Exception能扑捉到所有的异常
        print('出错了,错误信息是:',e)   #e代表异常信息

    eg2:  链接数据库

    def op_mysql(sql):
        try :   #可能出错的代码
            coon = pymysql.connect(host=MYSQL_HOST,user=MYSQL_USER,passwd=MYSQL_PASSWD,port=MYSQL_PORT,db=MYSQL_DB,charset='utf8')
    
        except Exception as e:  #出错后执行的代码
            raise e
        else:
            cur = coon.cursor(cursor=pymysql.cursors.DictCursor)#不出错执行
        try:
            cur.execute(sql)
        except Exception as e:
            raise e
        else:
            if sql.startswith('select'):
                res =cur.fetchone()
                print(res)
            else:
                coon.commit()
                res =88
            return res
        finally:   #不管成功失败都要执行
            cur.close()
            coon.close()

    二、常见的一些异常信息:

    如果自己能明确错误类型是那种错误就执行   except  具体错误 as e;如果不明确是那种错误就用Exception它会捕捉所有的错误

    AttributeError: 试图访问一个对象没有的属性,比如foo.x,但是foo没有属性x

    IOError:输入/输出异常,一般是无法打开文件

    ImportError: 无法导入模块或包,一般是路径问题或名称错误
    IndentationError:代码没有正确对齐,属于语法错误
    IndexError:下标索引超出序列边界,比如x只有三个元素,却试图访问x[3]
    KeyError:试图访问字典里不存在的键
    KeyboardInterrupt:Ctrl+C被按下
    NameError:使用一个还未被赋予对象的变量
    SyntaxError: 语法错误
    TypeError: 传入对象类型与要求的不符
    UnboundLocalError:试图访问一个还未被设置的局部变量,一般是由于在代码块外部还有另一个同名变量
    ValueError: 传入一个调用者不期望的值,即使值的类型是正确的
    三、主动抛出异常
    主动抛出异常,就是我们在代码里面让它自动抛出一个异常,然后捕捉到
    def is_correct_sql(sql):
        #select update insert delete truncate drop create alter
        sql_start  = ['select','update','insert','delete','truncate','drop','create','alter']
        for start in sql_start:
            if sql.startswith(start):
                return True
            else:
                raise TypeError #'SQL错误!!! '
            #主动抛出异常,
    is_correct_sql('dddd')
  • 相关阅读:
    Git 的使用
    state介绍
    salt之pillar组件
    salt之grains组件
    python之commands模块
    install命令
    salt常用模块及API
    locate包的安装
    集中化管理平台Saltstack安装配置
    系统批量运维管理器pexpect的使用
  • 原文地址:https://www.cnblogs.com/lingxia/p/7887357.html
Copyright © 2011-2022 走看看