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('无论代码有没有异常,都执行此代码')
须要处理的错误代码ide
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)
没有异常的时候执行此代码spa
无论代码有没有异常,都执行此代码
finally 和 return 相遇的时候,依然会执行
执行到return时,发现后面还有finally,先执行finally,再返回
经常使用于在函数中作异常处理,无论是否异常,去作一些收尾工做(如:关闭文件)3d
# 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())