說說在 Python 中如何處理異常

deniro發表於2019-04-20

說說在 Python 中如何處理異常

當出現異常時, Python 就會建立一個異常物件 。 如果我們編碼處理了該異常, 那麼程式將繼 續執行; 否則程式將停止, 並列印一個 traceback , 內部包含具體異常報告。

可以使用 try-except 程式碼塊來處理異常。編碼處理異常,並編寫友好的錯誤訊息,這要好於有時令人迷惑的 traceback。

1 try-except 程式碼塊

比如經典的除 0 操作,如果直接執行,就會出現 Traceback:

print(3 / 0)
複製程式碼

執行結果:

說說在 Python 中如何處理異常

Traceback 中的 ZeroDivisionError,就是生成的異常物件。

我們利用 try-except 程式碼塊,改寫上述示例:

try:
    print(5 / 0)
except ZeroDivisionError:
    print('除數不能是零哦')
複製程式碼

執行結果:

除數不能是零哦

再次出現 ZeroDivisionError 異常時,就會列印出友好提示啦O(∩_∩)O~

處理異常物件,還有一個好處:就是安全。如果某些人懷有惡意, 他會通過 traceback 獲知我們不希望他知道的資訊 。比如, 執行程式的檔名稱, 以及部分程式碼 。 專業的黑客可以利用這些資訊,對程式發起攻擊 。

把可能丟擲錯誤的程式碼,放在 try-except 程式碼塊中, 還可以提高程式的健壯性。

2 else 程式碼塊

try 程式碼塊執行成功後,會執行 else 程式碼塊中的內容。

print('請輸入兩個數,小迪同學將做除法操作。')
print('輸入 q,則退出。')

while True:
    dividend = input('被除數:')
    if (dividend == 'q'):
        break
    divisor = input('除數:')
    try:
        result = float(dividend) / float(divisor)
    except ZeroDivisionError:
        print('除數不能是零哦')
    else:
        print(result)
複製程式碼

執行結果:

說說在 Python 中如何處理異常


只要程式依賴於外部元素, 比如使用者輸入、 開啟檔案或網路連結, 就有可能出現異常。 所以,綜合使用 try-except-else 程式碼塊,即可以避免使用者無意間造成錯誤,還可以抵禦惡意攻擊,可謂是一舉兩得哦O(∩_∩)O~

相關文章