欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Python錯誤和異常總結(jié)詳細(xì)

 更新時間:2021年10月11日 16:41:06   作者:朱衛(wèi)軍  
本文詳細(xì)且清晰地講解了Python中錯誤和異常的概念及其處理方式,通過具體案例展示try...except、try...finally、with...等句式的具體用法,期望能幫助到對此感到迷惑的初學(xué)者

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

先拋出兩個問題:

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

1、語法錯誤

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

SyntaxError: invalid syntax

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

多任務(wù)寫成一行

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

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

2、異常

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

異常是什么?

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

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

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

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

Print('hello world')

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

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

其它異常的例子:

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

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

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

先看個異常處理的示例:

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

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

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

我們可以把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子句來幫忙了,舉個例子:

引發(fā)異常ZeroDivisionError

引發(fā)異常TypeError

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

當(dāng)然你還可以這樣寫:

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

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

  • 一個 try 語句可能有多個 except 子句,以指定不同異常的處理程序
  • 最多會執(zhí)行一個處理程序
  • 處理程序只處理相應(yīng)的 try 子句中發(fā)生的異常,而不處理同一 try 語句內(nèi)其他處理程序中的異常
  • 一個 except 子句可以將多個異常命名為帶括號的元組

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

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

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

再舉個例子:

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

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

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

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

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

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

7、with...語句

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

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

到此這篇關(guān)于Python錯誤和異??偨Y(jié)詳細(xì)的文章就介紹到這了,更多相關(guān)Python錯誤和異常內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Python如何實用File文件的實現(xiàn)

    Python如何實用File文件的實現(xiàn)

    本文主要介紹了Python如何實用File文件的實現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-02-02
  • 根據(jù)DataFrame某一列的值來選擇具體的某一行方法

    根據(jù)DataFrame某一列的值來選擇具體的某一行方法

    今天小編就為大家分享一篇根據(jù)DataFrame某一列的值來選擇具體的某一行方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-07-07
  • Python程序自動以管理員權(quán)限運行的實現(xiàn)方法

    Python程序自動以管理員權(quán)限運行的實現(xiàn)方法

    Windows上為了安全起見,python語言啟動的應(yīng)用程序默認(rèn)都不會使用admin管理員權(quán)限,但是在有些情況下我們又需要使用管理員權(quán)限啟動應(yīng)用,這篇文章主要給大家介紹了關(guān)于Python程序自動以管理員權(quán)限運行的實現(xiàn)方法,需要的朋友可以參考下
    2023-11-11
  • Python使用Selenium獲取Web頁面信息的流程步驟

    Python使用Selenium獲取Web頁面信息的流程步驟

    在 Web 自動化測試和數(shù)據(jù)抓取中,獲取頁面信息是一個基本且重要的操作,通過 Selenium,您可以輕松地獲取頁面的各種信息,這些信息不僅可以用于驗證測試結(jié)果,還可以用于數(shù)據(jù)分析和處理,所以本文給大家介紹了Python使用Selenium獲取Web頁面信息的流程步驟
    2025-03-03
  • Python機(jī)器學(xué)習(xí)庫scikit-learn使用詳解

    Python機(jī)器學(xué)習(xí)庫scikit-learn使用詳解

    scikit-learn是Python中最流行的機(jī)器學(xué)習(xí)庫之一,它提供了各種各樣的機(jī)器學(xué)習(xí)算法和工具,包括分類、回歸、聚類、降維等
    2023-03-03
  • Python Selenium 設(shè)置元素等待的三種方式

    Python Selenium 設(shè)置元素等待的三種方式

    這篇文章主要介紹了Python Selenium 設(shè)置元素等待的三種方式,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-03-03
  • 詳解如何使用numpy提高Python數(shù)據(jù)分析效率

    詳解如何使用numpy提高Python數(shù)據(jù)分析效率

    NumPy是Python語言的一個第三方庫,其支持大量高維度數(shù)組與矩陣運算。本文主要為大家介紹了如何使用numpy提高python數(shù)據(jù)分析效率,需要的可以參考一下
    2023-04-04
  • Python創(chuàng)建增量目錄的代碼實例

    Python創(chuàng)建增量目錄的代碼實例

    這篇文章主要給大家介紹了關(guān)于Python創(chuàng)建增量目錄的相關(guān)資料,文中通過實例代碼介紹的非常詳細(xì),對大家學(xué)習(xí)或者使用python具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2022-11-11
  • 基于python分析你的上網(wǎng)行為 看看你平時上網(wǎng)都在干嘛

    基于python分析你的上網(wǎng)行為 看看你平時上網(wǎng)都在干嘛

    這篇文章主要介紹了基于python分析你的上網(wǎng)行為 看看你平時上網(wǎng)都在干嘛,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2019-08-08
  • Django高并發(fā)負(fù)載均衡實現(xiàn)原理詳解

    Django高并發(fā)負(fù)載均衡實現(xiàn)原理詳解

    這篇文章主要介紹了Django高并發(fā)負(fù)載均衡實現(xiàn)原理詳解,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2020-04-04

最新評論