2019-04-26 14:00:57 3257瀏覽
Python開發(fā)工程師們在工作的過程中經(jīng)常會遇到這樣或者那樣的問題,本篇文章扣丁學(xué)堂Python培訓(xùn)小編給讀者們分享一下Python異常處理,對Python開發(fā)技術(shù)感興趣的小伙伴隨小編來了解一下吧。
定義:python解釋器檢測到錯誤,觸發(fā)異常(也允許程序員自己觸發(fā)異常)程序員編寫特定的代碼,專門用來捕 捉這個異常(這段代碼與程序邏輯無關(guān),與異常處理有關(guān))如果捕捉成功則進入另外一個處理分支,執(zhí)行你為其 定制的邏輯,使程序不會崩潰,這就是異常處理。
需求:當(dāng)程序遇到問題時不讓程序結(jié)束,而越過錯誤繼續(xù)向下執(zhí)行。
意義:python解析器去執(zhí)行程序,檢測到了一個錯誤時,觸發(fā)異常,異常觸發(fā)后且沒被處理的情況下,程序就在當(dāng)前異常處終止,后面的代碼不會運行,所以你必須提供一種異常處理機制來增強你程序的健壯性與容錯性。
try……except……else 格式: try: 語句t except 錯誤碼 as e: 語句1 except 錯誤碼 as e: 語句2 …… except 錯誤碼 as e: 語句n else: 語句e 注意:else語句可有可無
作用:用來檢測try語句塊中的錯誤,從而讓except語句捕獲錯誤信息并處理。
邏輯:當(dāng)程序執(zhí)行到try-except-else語句時1、如果當(dāng)try“語句t”執(zhí)行出現(xiàn)錯誤,會匹配第一個錯誤碼,如果匹配上就執(zhí)行對應(yīng)"語句"2、如果當(dāng)try“語句t”執(zhí)行出現(xiàn)錯誤,沒有匹配的異常,錯誤將會被提交到上一層的try語句?;蛘叩匠绦虻淖钌蠈?、如果當(dāng)try“語句t”執(zhí)行沒有出現(xiàn)錯誤,執(zhí)行else下的“語句e”(你得有)4、如果當(dāng)try“語句t”執(zhí)行出現(xiàn)錯誤,匹配到錯誤碼,執(zhí)行對應(yīng)"語句",然后將不在執(zhí)行以后的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' 出錯了,請檢查代碼?。? >>>
當(dāng)運行結(jié)果可能會出現(xiàn)二個或多個異常時使用多分支。
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' 出錯了,請檢查代碼!! >>>
和前面的代碼一模一樣。
語句無論是否發(fā)生異常都將執(zhí)行最后的代碼。
s1 = input('輸入:') try: int(s1) except ValueError as e: print(e) else: print('try內(nèi)代碼塊沒有異常則執(zhí)行我') finally: print('無論異常與否,都會執(zhí)行該模塊,通常是進行清理工作') ================ RESTART: C:\Users\Administrator\Desktop\1.py ================ 輸入:10 try內(nèi)代碼塊沒有異常則執(zhí)行我 無論異常與否,都會執(zhí)行該模塊,通常是進行清理工作 >>> ================ RESTART: C:\Users\Administrator\Desktop\1.py ================ 輸入:a invalid literal for int() with base 10: 'a' 無論異常與否,都會執(zhí)行該模塊,通常是進行清理工作 >>>
最后想要了解更多關(guān)于Python和人工智能方面內(nèi)容的小伙伴,請關(guān)注扣丁學(xué)堂Python培訓(xùn)官網(wǎng)、微信等平臺,扣丁學(xué)堂IT職業(yè)在線學(xué)習(xí)教育平臺為您提供權(quán)威的Python開發(fā)環(huán)境搭建視頻,Python培訓(xùn)后的前景無限,行業(yè)薪資和未來的發(fā)展會越來越好的,扣丁學(xué)堂老師精心推出的Python視頻教程定能讓你快速掌握Python從入門到精通開發(fā)實戰(zhàn)技能??鄱W(xué)堂Python技術(shù)交流群:279521237。
【關(guān)注微信公眾號獲取更多學(xué)習(xí)資料】 【掃碼進入Python全棧開發(fā)免費公開課】
查看更多關(guān)于"Python開發(fā)資訊"的相關(guān)文章>