【day27】异常处理try...except...Exception...else...finally
我们知道,代码中如果出现了错误,程序就会停止运行并报错。而如果我们不想程序停下,又要程序报错,怎么办呢?python提供了异常处理功能。
一、python的错误类型:
NameError: 尝试访问一个未声明的变量
ValueError:传给函数的参数类型不正确 ,比如给int()函数传字符串
IndexError:索引出序列范围
AttributeError:尝试访问位置的对象属性
ZeroDivisionError:除数为0
StopInteration:停止迭代
KeyError:请求一个不存在的字典关键字
SyntaxError:语法错误
二、异常处理
代码如下:
num = input('number: ')
try:
int(num)
except ValueError: #如果遇到ValueError错误,就运行该代码
print('请输入数字')
except Exception as e: #如果碰到ValueError意外的所有错误,就运行此代码
print(‘e’)
else: #程序不抱错,执行此代码
print('else被执行')
finally: #无论程序是否报错,都执行此代码
print('finally')
需要注意的是:try:passexcep:#这段代码中没有指出要捕获的错误,相当于所有的错误都捕获,但不返回,直接passpass 3、异常处理的特殊方法:断言:assert 语法:assert expression【,reason】 先判断表达式expression是否为真。真,不做什么;假,报错reason如:>>> assert 1==1>>> assert 1==2,"1 不等于 2!"Traceback (most recent call last): File "<stdin>", line 1, in <module>AssertionError: 1 不等于 2! 触发异常:raiseraise [Exception [, args [, traceback]]]#定义异常:def mye(l): if l < 4: raise Exception("aaaa",ls) #触发异常 try: mye(1) except Exception: print(1) else: print(2) finally: print(3)