好程式設計師Python培訓分享Python異常處理

好程式設計師發表於2020-11-25

   好程式設計師Python 培訓分享 Python 異常處理 Python 開發工程師們在工作的過程中經常會遇到這樣或者那樣的問題,本篇文章給讀者們分享一下 Python 異常處理,對 Python 開發技術感興趣的小夥伴隨小編來了解一下吧。

   定義:python 直譯器檢測到錯誤,觸發異常(也允許程式設計師自己觸發異常)程式設計師編寫特定的程式碼,專門用來捕 捉這個異常(這段程式碼與程式邏輯無關,與異常處理有關)如果捕捉成功則進入另外一個處理分支,執行你為其 定製的邏輯,使程式不會崩潰,這就是異常處理。

   需求:當程式遇到問題時不讓程式結束,而越過錯誤繼續向下執行。

   意義:python 解析器去執行程式,檢測到了一個錯誤時,觸發異常,異常觸發後且沒被處理的情況下,程式就在當前異常處終止,後面的程式碼不會執行,所以你必須提供一種異常處理機制來增強你程式的健壯性與容錯性。

 

try …… except …… else

格式:

try:

     語句t

except 錯誤碼 as e:

     語句1

except 錯誤碼 as e:

     語句2

……

except 錯誤碼 as e:

     語句n

else:

     語句e

 

注意:else 語句可有可無

 

作用:用來檢測try 語句塊中的錯誤,從而讓 except 語句捕獲錯誤資訊並處理。

 

   邏輯:當程式執行到try-except-else 語句時 1 、如果當 try “語句 t ”執行出現錯誤,會匹配第一個錯誤碼,如果匹配上就執行對應 " 語句 "2 、如果當 try “語句 t ”執行出現錯誤,沒有匹配的異常,錯誤將會被提交到上一層的 try 語句。或者到程式的最上層 3 、如果當 try “語句 t ”執行沒有出現錯誤,執行 else 下的“語句 e ”(你得有) 4 、如果當 try “語句 t ”執行出現錯誤,匹配到錯誤碼,執行對應 " 語句 " ,然後將不在執行以後的 except 語句。

 

例項程式碼:

 

>>> s1 = 'a'

>>> int(s1)

Traceback (most recent call last):

  File "<pyshell#1>", line 1, in <module>

    int(s1)

ValueError: invalid literal for int() with base 10: 'a'    

>>>

如何才能處理異常,進行下一步呢?

 

 

s1 = 'a'

try:

    int(s1)

except ValueError as e:

    print(e)

    print(' 出錯了,請檢查程式碼!! ')

================ RESTART: C:\Users\Administrator\Desktop\1.py ================

invalid literal for int() with base 10: 'a'

出錯了,請檢查程式碼!!

>>>

多分支

當執行結果可能會出現二個或多個異常時使用多分支。

 

try:

    msg = input(' 請輸入 :')

    num = int(msg)   

    nm = list(num)     

except TypeError as e:          

    print(e)

except ValueError as e:

    print(e)

================ RESTART: C:\Users\Administrator\Desktop\1.py ================

請輸入:111

'int' object is not iterable

>>>

================ RESTART: C:\Users\Administrator\Desktop\1.py ================

請輸入:a

invalid literal for int() with base 10: 'a'

>>>

 

 

萬能異常

 

python 的異常中,有一個萬能異常: Exception ,他可以捕獲任意異常

 

 s1 = 'a'

try:

    int(s1)

except Exception as e:

    print(e)

    print(' 出錯了,請檢查程式碼!! ')

================ RESTART: C:\Users\Administrator\Desktop\1.py ================

invalid literal for int() with base 10: 'a'

出錯了,請檢查程式碼!!

>>>

 

 

和前面的程式碼一模一樣。

 

try-finally 語句

語句無論是否發生異常都將執行最後的程式碼。

 

 

 

s1 = input(' 輸入: ')

try:

    int(s1)

except ValueError as e:

    print(e)

else:

    print('try 內程式碼塊沒有異常則執行我 ')

finally:

    print(' 無論異常與否 , 都會執行該模組 , 通常是進行清理工作 ')

================ RESTART: C:\Users\Administrator\Desktop\1.py ================

輸入:10

try 內程式碼塊沒有異常則執行我

無論異常與否, 都會執行該模組 , 通常是進行清理工作

>>>

================ RESTART: C:\Users\Administrator\Desktop\1.py ================

輸入:a

invalid literal for int() with base 10: 'a'

無論異常與否, 都會執行該模組 , 通常是進行清理工作

>>>


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69913864/viewspace-2736913/,如需轉載,請註明出處,否則將追究法律責任。

相關文章