更新時間:2022-09-07 來源:黑馬程序員 瀏覽量:
在Python2.5之前,finally子句曾經(jīng)不能與try-except或try-except-else子句一起使用,只能使用try-finally,但是這并不符合大部分程序員的習慣。從Python2.5開始,finally子句可以與except子句和else子句自由組合,與try語句聯(lián)合使用。python中try/except/else/finally語句的完整格式如下:
try: # 語句塊 except A: # 異常A處理代碼 except: # 其他異常處理代碼 else: # 沒有異常處理代碼 finally: # 最后必須處理代碼
正常執(zhí)行的程序在try語句塊中執(zhí)行,在執(zhí)行的過程中如果發(fā)生了異常,則需要中斷當前在try語句塊中的執(zhí)行,然后跳轉(zhuǎn)到對應的異常處理塊中開始執(zhí)行。
Python會從第一個except處開始查找。如果找到了對應的異常類型,則進入其提供的except塊中進行處理;如果沒有找到,則直接進入不帶異常類型的except塊進行處理;不帶異常類型的except塊是可選項,如果沒有提供,這個異常就會被提交給Python進行默認處理,處理方式則是終止應用程序并打印提示信息。
如果在try語句塊執(zhí)行過程中沒有發(fā)生任何異常,則程序在執(zhí)行完try語句塊后進入else執(zhí)行塊中(如果存在的話)執(zhí)行。
無論是否發(fā)生了異常,只要提供了finally語句,程序執(zhí)行的最后一步總是執(zhí)行finally對應代碼塊。
注意:
(1)在完整的異常處理結(jié)構(gòu)中,try/except/else/finally出現(xiàn)的順序必須是“try”→“except”→“else”→“finally”,即所有的except必須位于else和finally之前,else必須位于finally之前,而exceptA必須位于except之前,否則會出現(xiàn)語法錯誤。
(2)else和finally語句都是可選的,且finally語句必須是在整個結(jié)構(gòu)的末尾。
(3)else語句不能與沒有except語句的異常處理結(jié)構(gòu)配合使用,不然會引發(fā)語法錯誤。也就是說,else不能與try-finally配合使用。