色综合图-色综合图片-色综合图片二区150p-色综合图区-玖玖国产精品视频-玖玖香蕉视频

您的位置:首頁技術(shù)文章
文章詳情頁

新手常見Python錯誤及異常解決處理方案

瀏覽:81日期:2022-07-20 15:18:31

寫Python代碼的小伙伴不可避免地會遇到代碼執(zhí)行錯誤和異常,這次就來詳細且不失通俗地總結(jié)一下python中的錯誤和異常。

先拋出兩個問題:

什么是Python錯誤和異常?

如何處理Python錯誤和異常?

1.語法錯誤可能是初學者最常遇到的,如下面熟悉的畫面:

SyntaxError: invalid syntax語法錯誤又稱解析錯誤,又有老哥會問什么是解析錯誤?簡單來說是基本語法結(jié)構(gòu)寫錯了,如:多任務寫成一行、for循環(huán)沒加‘:’等。如下:

新手常見Python錯誤及異常解決處理方案

多任務寫成一行

新手常見Python錯誤及異常解決處理方案

for循環(huán)沒加‘:’

上面示例可以看到,針對語法錯誤,python解析器會輸出錯誤的那一行,并且在最先找到的錯誤的位置標記了一個箭頭。

 熟悉python語法后,可以避免語法錯誤,但是代碼常會發(fā)生異常(Exception)。還是兩個問題:

2.異常是什么?

 異常和語法錯誤有什么區(qū)別呢?

關(guān)于異常,舉個例子:

這行代碼出現(xiàn)異常,因為Print的p應該小寫:

新手常見Python錯誤及異常解決處理方案

python拋出異常類型:NameError,即名字錯誤。

其它異常的例子:

新手常見Python錯誤及異常解決處理方案

可以看到,異常有不同的類型,發(fā)生異常后,其類型名稱會被打印出來。上述這些都是python內(nèi)置的異常,用戶也可以自定義異常,這里不做贅述。

3、try...except...語句

有python編程經(jīng)驗的人會知道,python里用try...except...語句來處理異常情況。

先看個異常處理的示例:

新手常見Python錯誤及異常解決處理方案

看,我們完美地捕捉到了程序中的異常。

結(jié)合上面的示例,處理異常的規(guī)則是:把執(zhí)行的語句放在 try 代碼塊中,將錯誤處理器代碼放置在 except 代碼塊中,except會引發(fā)ZeroDivisionError異常來提醒Coder,這段代碼的錯誤是零不能作為被除數(shù)。

except后面也可以不添加異常類型,會捕獲所有出現(xiàn)的異常:

新手常見Python錯誤及異常解決處理方案

我們可以把try...except...原理歸納為幾個要點:

首先,執(zhí)行 try 子句 (try 和 except 關(guān)鍵字之間的(多行)語句) 如果沒有異常發(fā)生,則跳過 except 子句 并完成 try 語句的執(zhí)行 如果在執(zhí)行try 子句時發(fā)生了異常,則跳過該子句中剩下的部分。然后,如果異常的類型和 except 關(guān)鍵字后面的異常匹配,則執(zhí)行 except 子句 ,然后繼續(xù)執(zhí)行 try 語句之后的代碼

如果發(fā)生的異常和 except 子句中指定的異常不匹配,則將其傳遞到外部的 try 語句中;如果沒有找到處理程序,則它是一個未處理異常,執(zhí)行將停止并顯示如上所示的消息

4、多個except子句

上面的try...except...語句只處理了一種異常,如果我想多匹配幾個異常類型,怎么辦呢?

這里就需要多個except子句來幫忙了,舉個例子:

新手常見Python錯誤及異常解決處理方案

引發(fā)異常ZeroDivisionError

新手常見Python錯誤及異常解決處理方案

引發(fā)異常TypeError

上面我們用了兩個except,匹配ZeroDivisionError和TypeError這兩種異常,第一個代碼捕捉到了ZeroDivisionError,第二段代碼捕捉到了TypeError異常,一個都沒有漏。當然你還可以這樣寫:

新手常見Python錯誤及異常解決處理方案

也就是用一個except捕捉多個異常,異常類型放到except后面的元組里。

綜上,對于多個except子句,可以總結(jié)為:

一個try語句可能有多個 except 子句,以指定不同異常的處理程序

最多會執(zhí)行一個處理程序

處理程序只處理相應的 try 子句中發(fā)生的異常,而不處理同一try語句內(nèi)其他處理程序中的異常

一個 except 子句可以將多個異常命名為帶括號的元組

5、try...except Exception as e語句

我們常常會看看這樣的寫法:

try...exceptException as e其中的e代表什么意思呢?

再舉個例子:

新手常見Python錯誤及異常解決處理方案

通過示例可以知道,e輸出了異常類型。也就是說,Exception匹配了所有異常,把異常名稱賦給了e。

當然這里不一定非得是e,你可以取任何的變量名,只是約定俗稱這樣寫罷了。

6、try...except...finally語句

try...except...finally語句可能并不那么常見,但它是非常有用的。

如果說,我想用python打開了一個txt文件,然后讀取,寫入,最后關(guān)閉文件對象。這是一套常規(guī)流程,如果我想捕捉代碼過程中的異常,又要保證無論是否有異常,最后都必須要關(guān)閉文件。這時候就用到finally,看下面例子:

新手常見Python錯誤及異常解決處理方案

上面代碼,既捕捉到了異常,最終又關(guān)閉了文件對象。

finaly的作用是,無論except是否捕捉到異常,

finally后面的代碼都會執(zhí)行,try獲取了資源,

finally釋放資源,保證了收尾工作。

7、with...語句

with...語句是try-finally語句的簡寫,可以替代try-finally的功能。

新手常見Python錯誤及異常解決處理方案

表達式open(’poem.txt’)返回是一個_io.TextIOWrapper 類型的變量賦給f。

在with語句塊中就可以使用這個變量操作文件。

執(zhí)行with這個結(jié)構(gòu)之后,f會自動關(guān)閉,相當于自帶了一個finally。

8、總結(jié)

本文詳細且清晰地講解了Python中錯誤和異常的概念及其處理方式,

通過具體案例展示try...except、try...finally、with...等句式的具體用法,

以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持好吧啦網(wǎng)。

標簽: Python 編程
相關(guān)文章:
主站蜘蛛池模板: 亚洲精品一区二区中文 | 极品欧美| 在线看片 在线播放 | 国产理论视频 | 美女张开腿| 99精品久久秒播无毒不卡 | cao在线视频 | 香港aa三级久久三级老师 | 亚洲综合第一欧美日韩中文 | 九一精品| 在线观看国产一区二三区 | 久草视频观看 | 久久99国产亚洲高清观看韩国 | 国产精品亚洲专区一区 | 亚洲一区二区三区免费 | 美女张开腿让人捅 | 成人免费视频播放 | 香蕉在线观看999 | 精品一区二区三区视频 | 精品久久久久久免费影院 | 狠狠色婷婷丁香综合久久韩国 | 欧美成人精品第一区 | 亚洲欧美一区在线 | 日本aaa毛片 | 欧美一级特黄aa大片 | 日韩中文字幕视频 | avhd101天天看新片 | 成人久久网站 | 久久综久久美利坚合众国 | 亚洲视频一区二区三区 | 亚洲国产精久久久久久久春色 | 黄色美女网站在线观看 | 免看一级a一片成人123 | 色久天堂网| 国产精品夫妇久久 | 久久狠 | 日韩精品在线一区二区 | 美女黄网站| 中文字幕欧美一区 | 精品国产中文一级毛片在线看 | 免费高清特级毛片 |