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())