1. 程式人生 > >python進階(異常處理)

python進階(異常處理)

 

一、異常處理基本知識:

1、程式碼異常的特性:

           python程式一旦發生錯誤,就從錯誤的位置停下來了,不會執行後面的內容。

二、異常處理語句(try     except      else      finally):

1、簡單的異常處理:

try:
    a                               未定義的變數,NameError

    print('我不會執行')                該程式碼不會執行

except NameError:                 try語句程式碼異常 且 程式碼錯誤符合時執行
    print('語法錯誤')
else:
    print('try裡面程式碼 沒有錯誤時執行。')

print(22)                         print('不會執行')不會執行,跳轉到下面繼續執行

結果:
語法錯誤
22
1、try  我們需要處理的程式碼塊
2、except 後面跟一個 錯誤型別,當代碼錯誤型別與其相符合時,執行except語句。可以通過 “except 錯誤型別 as 變數”  語句賦值  變數。
3、except 可以多個並列並且沒有次數限制。
4、萬能報錯處理 :    except Exception :    ;常見報錯集合  except BaseException:
   單獨處理異常型別通常放在萬能異常之前。
5、finally 不管程式碼是否異常 都會執行,常用函式中與return並列的情況,優先執行finally語句,然後return。

 2、綜合的異常處理:

           (1)程式碼:可以用as 將錯誤賦值給變數。

print('開始執行!')
try:
    a
    1/0
    [][3] = 0
    print('不會執行')
except NameError as error:               # except類似於if else ,一旦有異常條件滿足,不會執行其他條件。
    print('未定義變數錯誤!',error)
except Exception:
    print('萬能異常處理方式!')
else:
    print('try程式碼沒有問題')
finally:
    print('是否異常我都會執行》》》》')
print('異常處理後代碼繼續執行')

結果:

開始執行!
未定義變數錯誤! name 'a' is not defined
是否異常我都會執行》》》》
異常處理後代碼繼續執行

             (2)執行過程分析:

3、finally在函式中的作用:


def func():
    try:
        f = open('file.txt','r')
        a                        # 錯誤
        return True
    except :
        return False              # 執行return之前,要將finally語句中的內容執行一遍。
    finally:
        print('執行finally語句了')
        f.close()
print(func())

結果:

執行finally語句了
False