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: 传入一个调用者不期望的值,即使值的类型是正确的
原文地址:https://www.cnblogs.com/niuniu2018/p/7866809.html