day 21 03 异常处理(补全)
1.异常处理的整体几个语句:
try: .......#有可能出错的代码 ret=int(input('number >>>')) print(ret*'*') except ValueError: print('您输入的内容错误,请输入一个数字') except KeyError: print('请输入正确的格式') except Exception: print('你错了,老铁') else: print('没有异常的时候执行else里面的代码')#当try里面的代码都执行成功,即没有异常的时候就会执行else里面的代码 finally: print('====')# 不管有没有异常,都会执行,finally后面的代码都可以继续执行
2.什么时候用finally
举一个例子:无论什么时候,打开一个文件,就会在操作结束后关闭文件,而当不知道操作过程有没有出错的时候就可以用finally了
def func(): try: f=open('file','w') return True except: return False finally: print('执行finall了') f.close()#肯定是在最后面关闭文件是最好的,无论中间有没有错误,打开了文件,总是要关闭的 print(func())
运行结果:
执行finally了
True
#return肯定是执行了,但是在return的过程中,它先执行了finally里面的代码,后面才接收返回的值,然后结束有跳出函数
finally:不管代码是否异常都会执行
finally和return相遇的时候依然会执行
一般都是在函数里面做异常处理,不管是否异常去做一些收尾工作
3.当使用万能异常机制exception的时候可提示具体哪里错误
try: # .......#有可能出错的代码 ret=int(input('number >>>')) print(ret*'*') # except ValueError: # print('您输入的内容错误,请输入一个数字') # except KeyError: # print('请输入正确的格式') except Exception as error: #这里加一个as语句,as+起一个名字 print('你错了,老铁',error) #打印的时候也要打印上面起的名字
#输入一个错误的a number >>>a 你错了,老铁 invalid literal for int() with base 10: 'a' #会有提示具体哪里出错了