1. 程式人生 > 其它 >Python入門進階篇 No.2 —— try_except基本結構

Python入門進階篇 No.2 —— try_except基本結構

技術標籤:# 進階python程式語言經驗分享程式人生windows

Python入門進階篇 No.2 —— try_except基本結構


文章目錄

前生篇:異常本質_除錯核心理念

後世篇:try…except…else 結構_try…except…finally 結構

基礎篇:小白不看都能懂 —— Python之真功夫系列(全章)


一、try…一個 except 結構

  • try…except 是最常見的異常處理結構。結構如下:
try:
	被監控的可能引發異常的語句塊
except BaseException [as e]:
	異常處理語句塊
  • try 塊包含著可能引發異常的程式碼,except 塊則用來捕捉和處理髮生的異常。執行的時候,如果 try 塊中沒有引發異常,則跳過 ecept 塊繼續執行後續程式碼;執行的時候,如果 try塊中發生了異常,則跳過 try 塊中的後續程式碼,跳到相應的 except 塊中處理異常;異常處理完後,繼續執行後續程式碼。
# 遇到異常的執行順序:
# 測試簡單的0不能做除數出現的異常

try:
    print('step1')
    a = 6 / 0
    print('step2'
) except BaseException as e: print('step3') print(e) print('step4') ----------------------- step1 step3 division by zero step4
  • 我們可以看到,程式執行到引發異常的語句時,直接掉到 except 異常處理語句塊進行處理;處理完畢後,繼續執行下面的程式。
# 遇到異常的執行順序:
# 測試簡單的0不能做除數出現的異常

try:
    print('step1')
    a = 6 / 2
    print('step2')
except BaseException as
e: print('step3') print(e) print('step4') ---------------------- step1 step2 step4
  • try 語句塊沒有發生異常,則正常執行完 try 塊後跳過 except 異常處理語句塊,繼續往下執行。
  • 迴圈輸入數字,如果不是數字則處理異常;直到輸入 66,則結束迴圈。
while True:
    try:
        x = int(input('請輸入一個數字:'))
        print('輸入的數字是', x)
        if x == 66:
            print('退出程式')
            break
    except:
        print('異常:輸入的不是一個數字')
-------------------------------
輸入的數字是 56
請輸入一個數字:xyz
異常:輸入的不是一個數字
請輸入一個數字:66
輸入的數字是 66
退出程式

二、try…多個 except 結構

  • 上面的結構可以捕獲所有的異常,工作中也很常見。但是,從經典理論考慮,一般建議儘量捕獲可能出現的多個異常(按照先子類後父類的順序),並且針對性的寫出異常處理程式碼。為了避免遺漏可能出現的異常,可以在最後增加 BaseException。結構如下:
try:
	被監控的、可能引發異常的語句塊
except Exception1:
	處理 Exception1 的語句塊
except Exception2:
	處理 Exception2 的語句塊
	
... 
except BaseException:
	處理可能遺漏的異常的語句塊
# 多個except結構
try:
    a = input('請輸入被除數:')
    b = input('請輸入除數:')
    c = float(a) / float(b)
    print(c)
except ZeroDivisionError:
    print('異常,除數不能為0')
except TypeError:
    print('異常,除數和被除數都應該為數值型別')
except NameError:
    print('異常,變數不存在')
except BaseException as  e:
    print(e)
    print(type(e))
--------------------------------
請輸入被除數:10
請輸入除數:0
異常,除數不能為0

總結

以上幫各位總結好了,收藏,關注即可查收。

前生篇:異常本質_除錯核心理念

後世篇:try…except…else 結構_try…except…finally 結構

基礎篇:小白不看都能懂 —— Python之真功夫系列(全章)


關注下方公眾號,免費拿Python學習資料!!!

在這裡插入圖片描述