91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Python錯誤和異常的示例分析

發布時間:2022-03-04 15:18:15 來源:億速云 閱讀:151 作者:小新 欄目:開發技術

這篇文章將為大家詳細講解有關Python錯誤和異常的示例分析,小編覺得挺實用的,因此分享給大家做個參考,希望大家閱讀完這篇文章后可以有所收獲。

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

先拋出兩個問題:

  • 什么是Python錯誤和異常?

  • 如何處理Python錯誤和異常?

1、語法錯誤

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

SyntaxError: invalid syntax

語法錯誤又稱解析錯誤,又有老哥會問什么是解析錯誤?簡單來說是基本語法結構寫錯了,如:多任務寫成一行、for循環沒加‘:'等。如下:

多任務寫成一行

Python錯誤和異常的示例分析

for循環沒加‘:'

Python錯誤和異常的示例分析

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

2、異常

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

異常是什么?

Python用異常對象(exception object)來表示異常情況。
遇到錯誤后,會引發異常。如果異常對象并未被處理或捕捉,程序就會用所謂的回溯(traceback, 一種錯誤信息)終止執行。

異常和語法錯誤有什么區別呢?

錯誤:是指代碼不符合解釋器或者編譯器語法
異常:是指不完整、不合法輸入,或者計算出現錯誤

關于異常,舉個例子:

Print('hello world')

這行代碼出現異常,因為Print的p應該小寫:

Python錯誤和異常的示例分析

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

其它異常的例子:

Python錯誤和異常的示例分析

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

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

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

先看個異常處理的示例:

Python錯誤和異常的示例分析

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

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

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

Python錯誤和異常的示例分析

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

  • 首先,執行 try 子句 (try 和 except 關鍵字之間的(多行)語句)

  • 如果沒有異常發生,則跳過 except 子句 并完成 try 語句的執行

  • 如果在執行try 子句時發生了異常,則跳過該子句中剩下的部分。然后,如果異常的類型和 except 關鍵字后面的異常匹配,則執行 except 子句 ,然后繼續執行 try 語句之后的代碼

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

4、多個except子句

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

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

引發異常ZeroDivisionError

Python錯誤和異常的示例分析

引發異常TypeError

Python錯誤和異常的示例分析

上面我們用了兩個except,匹配ZeroDivisionErrorTypeError這兩種異常,第一個代碼捕捉到了ZeroDivisionError,第二段代碼捕捉到了TypeError異常,一個都沒有漏。

當然你還可以這樣寫:

Python錯誤和異常的示例分析

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

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

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

  • 最多會執行一個處理程序

  • 處理程序只處理相應的 try 子句中發生的異常,而不處理同一 try 語句內其他處理程序中的異常

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

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

我們常常會看看這樣的寫法:try...except Exception as e

其中的e代表什么意思呢?

再舉個例子:

Python錯誤和異常的示例分析

通過示例可以知道,e輸出了異常類型。

也就是說,Exception匹配了所有異常,把異常名稱賦給了e。當然這里不一定非得是e,你可以取任何的變量名,只是約定俗稱這樣寫罷了。

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

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

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

Python錯誤和異常的示例分析

上面代碼,既捕捉到了異常,最終又關閉了文件對象。finaly的作用是,無論except是否捕捉到異常,finally后面的代碼都會執行,try獲取了資源,finally釋放資源,保證了收尾工作。

7、with...語句

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

Python錯誤和異常的示例分析

表達式open('poem.txt')返回是一個_io.TextIOWrapper 類型的變量賦給f。在with語句塊中就可以使用這個變量操作文件。執行with這個結構之后,f會自動關閉,相當于自帶了一個finally

關于“Python錯誤和異常的示例分析”這篇文章就分享到這里了,希望以上內容可以對大家有一定的幫助,使各位可以學到更多知識,如果覺得文章不錯,請把它分享出去讓更多的人看到。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

建瓯市| 镇江市| 察雅县| 桂阳县| 车致| 玉树县| 睢宁县| 大方县| 叶城县| 泽库县| 潮安县| 扶沟县| 金坛市| 台中市| 淅川县| 五莲县| 景宁| 阳朔县| 南开区| 越西县| 东宁县| 毕节市| 肃宁县| 垫江县| 巨鹿县| 台州市| 茶陵县| 碌曲县| 密云县| 龙川县| 罗甸县| 临夏市| 北宁市| 湖州市| 穆棱市| 公安县| 揭东县| 丰台区| 宣武区| 札达县| 桃江县|