2020-11-25
Python培訓
好程序員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”執行出現錯誤,會匹配diyi個錯誤碼,如果匹配上就執行對應"語句"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'
無論異常與否,都會執行該模塊,通常是進行清理工作
>>>
開班時間:2021-04-12(深圳)
開班盛況開班時間:2021-05-17(北京)
開班盛況開班時間:2021-03-22(杭州)
開班盛況開班時間:2021-04-26(北京)
開班盛況開班時間:2021-05-10(北京)
開班盛況開班時間:2021-02-22(北京)
開班盛況開班時間:2021-07-12(北京)
預約報名開班時間:2020-09-21(上海)
開班盛況開班時間:2021-07-12(北京)
預約報名開班時間:2019-07-22(北京)
開班盛況Copyright 2011-2023 北京千鋒互聯科技有限公司 .All Right 京ICP備12003911號-5 京公網安備 11010802035720號