异常:代码中的逻辑错误
程序一旦发生错误,就从错误的位置停下来不继续执行
使用try和except就能处理异常
try: int('aaa') print('111') # 检查错误的位置 1/0 print('222') name print('333') 2 + '3' [][3] {}['k'] ret = int(input('number >>> ')) print(ret * '*') except ValueError: print('输入的数据类型有误') except IndexError: print('超出列表的最大长度了') except Exception: print('你错了') else: print('没有异常的时候执行此代码') finally: print('不管代码有没有异常,都执行此代码')
1. try:
需要处理的错误代码
2. except:
except + 错误类型:当代码发生错误且错误类型符合时,执行此段代码
except 支持多分支
except + Exception: 万能异常处理
有了万能异常处理仍然要把能预测到的问题单独处理
单独处理的所有内容都应该写在万能异常之前
# 可以看到报错信息的异常处理 try: int('aaa') print('111') # 检查错误的位置 1/0 print('222') name print('333') 2 + '3' [][3] {}['k'] ret = int(input('number >>> ')) print(ret * '*') except Exception as error: # 可以看到报错信息 print('你错了',error)
3. else:
没有异常的时候执行此代码
4. finally:
不管代码有没有异常,都执行此代码
finally 和 return 相遇的时候,依然会执行
执行到return时,发现后面还有finally,先执行finally,再返回
常用于在函数中做异常处理,不管是否异常,去做一些收尾工作(如:关闭文件)
# finally的用法 # (1)不用finally def func(): try: f = open('file','w') f.close() return True except: f.close() return False print(func()) # (1)使用finally # 执行到return时,发现后面还有finally,先执行finally,再返回 def func(): try: f = open('file','w') return True except: return False finally: print('执行finally了') f.close() print(func())