zoukankan      html  css  js  c++  java
  • Python基础-异常处理

    程序运行过程中经常报错,为了知道程序的报错信息,我们可以捕捉异常

    price=input("请输入价格:")
    try:
        new_price=int(price)/0 #try包进去要执行代码
    except Exception as e:#如果try中代码出错,才走exception
        print(e)
    else:#如果没有出异常,走这里
    finally:
        print('finallly')#不论有无异常,都可以走到这里
    else和finally不是必须有的。
    至少try和except这俩是要有
    def conn_mysql(sql):
        import pymysql
        try:
            conn = pymysql.connect(host=MYSQL_HOST,user=USER,password=PASSWORD,db=DB,charset='utf8',port=MYSQL_PORT)
        except Exception as e:
            print('mysql连接出错,错误信息为%s'%e)
            res = {"code":5,"msg":'mysql连接出错,错误信息为%s'%e}
        else:
            cur = conn.cursor(cursor=pymysql.cursors.DictCursor)
        try:
            cur.execute(sql)
        except Exception as e:
            msg = "sql执行出错,请检查sql,错误信息为:%s"%e
            res = {"code":5,"msg":msg}
        else:
            res = cur.fetchone()
            conn.commit()
        finally:
            cur.close()
            conn.close()
            return res

    raise主动抛出异常

    # raise 主动抛出异常

    price=input("请输入价格:")
    if price.isdigit(): #如果输入的价格是数字,就pass
    pass
    else:
    raise ValueError#如果输入的价格不是数字,就报错

    二,经常遇到的异常信息
    AttributeError: 试图访问一个对象没有的属性,比如foo.x,但是foo没有属性x
     
    IOError:输入/输出异常,一般是无法打开文件
     
    ImportError: 无法导入模块或包,一般是路径问题或名称错误
     
    IndentationError:代码没有正确对齐,属于语法错误
     
    IndexError:下标索引超出序列边界,比如x只有三个元素,却试图访问x[3]
     
    KeyError:试图访问字典里不存在的键
     
    KeyboardInterrupt:Ctrl+C被按下
     
    NameError:使用一个还未被赋予对象的变量
     
    SyntaxError: 语法错误
     
    TypeError: 传入对象类型与要求的不符
     
    UnboundLocalError:试图访问一个还未被设置的局部变量,一般是由于在代码块外部还有另一个同名变量
     
    ValueError: 传入一个调用者不期望的值,即使值的类型是正确的
  • 相关阅读:
    SQL注入原理解说,非常不错!
    Asp.Netserver控件开发的Grid实现(三)列编辑器
    Windows下搭建deepnet环境
    reactor设计模式
    C++ 表达式语句 海伦的故事
    [ArcGIS必打补丁]ArcGIS 10.1 SP1 for (Desktop, Engine, Server) Quality Improvement Patch
    四个好看的CSS样式表格
    UVA 10047 The Monocycle (状态记录广搜)
    二叉搜索树相关性质的应用
    广播(broadcast)、电视与电视网络
  • 原文地址:https://www.cnblogs.com/niuniu2018/p/7866809.html
Copyright © 2011-2022 走看看