Python中的異常處理:使用try except處理異常

已發表: 2021-06-29

遇到錯誤時,Python 程序會終止。 錯誤通常是程序停止執行時出現的問題。 這些錯誤可能是由於語法錯誤或異常所致。 每當解析器檢測到不正確的語句時,就會發生語法錯誤。

但是,當具有正確語法的代碼產生錯誤時,它被稱為異常。 python 中提供了各種內置異常。 這些是隨著程序正常流程發生變化的內部事件的發生而引發的。

因此,異常可以定義為導致代碼中斷並因此中止程序流程的某些不尋常的程序條件。

程序的執行一旦遇到異常就會停止。 這進一步停止了代碼的執行。 因此,異常是運行時導致的錯誤,無法由 python 腳本處理。

對於 python 中的異常處理,腳本語言 python 提供了一個解決方案,使代碼的執行繼續進行並且沒有任何中斷。 缺少異常處理會停止執行在引發異常的代碼之後存在的代碼。

python 中提供了幾個內置選項,它們允許程序的執行沒有任何中斷,包括常見的異常。 除此之外,還提供了python 自定義異常 對於任何 python 程序,可以拋出的常見異常是:

  • ZeroDivisionError:當使用零除數時會導致這種類型的異常。
  • NameError:每當程序找不到全局或本地名稱時,就會發生這種類型的異常。
  • IndentationError:不正確的縮進會導致 indentationError。
  • IOError :輸入輸出操作失敗導致 IOError。
  • EOFError:它發生在程序的連續運行中,即使當

文件結束。

目錄

引發異常

為了在某些條件下拋出異常,使用 raise。
程序的執行被暫停,相關的異常顯示在屏幕上。 異常的顯示讓用戶知道潛在的問題可能是什麼。

在python中通過使用raise子句,我們可以引發異常。 在需要通過引發異常來停止程序的情況下,該應用程序很有用。

例如:假設一個程序需要大約 1GB 的內存來執行它,它試圖佔用 1GB,在這種情況下,停止執行程序可能會引發異常。

引發異常的語法:

異常類,<值>

所以,

  • “raise”用於在程序中引發異常。
  • 可以將值提供給可以提供給括號的異常。
  • 可以使用關鍵字“as”訪問該值。 賦予異常的值可以存儲在用“e”表示的引用變量中。
  • 為了指定異常類型,可以將值傳遞給異常。

斷言錯誤

可以在 python 中進行斷言,而不是讓程序崩潰。 斷言程序滿足特定條件。 如果條件為真,程序將繼續運行。 否則,當條件為假時,程序會拋出 AssertionError 異常。

通過try 和 except 塊處理異常

python中拋出的異常被python中的try和except塊捕獲並處理。 try 塊中的代碼作為程序的一部分正常執行。 另一個塊包括響應 try 塊中程序拋出的異常而執行的語句。

每當在語法正確的代碼中遇到錯誤時,程序就會拋出異常。 如果拋出的異常處理不當,程序就會崩潰。 在這種情況下,except 塊確定程序對該異常的響應。

try 和 except 子句的應用最好通過以下示例來理解,該示例取自上述來源。

在這種情況下,只要發生異常,程序將繼續運行,並通知用戶程序不成功,而不是給出空白輸出。

結帳:Python 項目的想法和主題

該程序顯示了通過函數調用引發的錯誤類型。 但是,可以捕獲該函數引發的錯誤以了解實際出了什麼問題。

在 windows 機器上運行代碼將生成以下內容

首先顯示的消息表示一個 AssertionError,通過該錯誤通知用戶該函數只能在 Linux 操作系統的系統上執行。 第二條消息進一步給出了哪個函數無法執行的信息。
如果 file.log 將生成帶有消息“無法打開 file.log”的輸出,則不存在。

該程序仍將繼續運行,因為它是將信息傳遞給用戶的消息。 Python 文檔中提供了許多內置異常。 如下所示的一種例外情況。

在這種情況下不存在 file.log 將生成以下輸出。

通過在 try 子句中使用更多的函數調用可以捕獲各種異常。 但是,在檢測到異常時,try 子句語句將停止。

else 子句

使用語句的 else 子句可以幫助指示程序僅在沒有異常時才執行語句塊。

else 子句被執行只是因為沒有例外。 如果代碼包含異常,則會產生以下結果。

Python 自定義異常

Python 有許多內置異常,只要程序出現問題,就會拋出錯誤。 但是,用戶需要創建一些自定義的例外,以達到他的目的。

可以創建一個新類來定義自定義異常。 無論是直接還是間接,這些類都必須從內置異常類派生。

創建用戶定義的類 CustomError,它繼承自 Exception 類。 與其他異常類似,這些異常也是通過使用“raise”和可選的錯誤消息引發的。

每當開發大型 python 程序時,應將用戶定義的異常放在單獨的文件中。 這樣做通常是一種很好的做法,大多數標準模塊都遵循這種做法,其中異常分別定義為errors.py或exceptions.py。

python 自定義異常簡單,因為普通類實現了它們也遵循相同的所有內容。

語法和示例

讓我們考慮兩個變量a和b。 變量的輸入取自用戶並執行數字的除法。 現在,如果用戶輸入的分母為零。

為了處理這些異常,可以將 try-except 塊添加到程序中。 對於導致懷疑拋出異常的任何類型的代碼。 它應該放在語句的 try 塊中。

try 塊的語法

嘗試:

#代碼

除了例外1:

#代碼

除了例外2:

#代碼

#代碼

它顯示了 try-except 語句的使用,其中代碼放置在 try 塊中,並在代碼中沒有異常時執行。

帶有 try-except 的 else 語句的語法

嘗試

#try 語句

除了例外1

#代碼

別的

#沒有異常時執行代碼

幾個重要的點:

  • 異常不能通過python中的異常語句來指定。
  • 可以通過使用 try 塊在代碼中聲明多個異常,因為 try 塊內可以有許多語句可以引發不同類型的異常。
  • 可以使用 try 塊指定 else 塊,該塊在 try 塊沒有拋出異常時執行。
  • else 塊應該包含不負責拋出異常的語句。

另請閱讀:Python 深受開發人員歡迎的主要原因

結論

在本文中,我們通過一些示例簡要討論了python中異常處理的概念。 除了內置異常之外,還簡要定義python 自定義異常。 現在,您可以了解異常的重要性以及python 中異常的處理

如果你有興趣了解更多關於python語言及其在數據科學中的實現,可以查看upGrad的以下課程“數據科學中的Executive PG Program”。

在線課程專為 21 至 45 歲年齡段的所有入門級專業人士設計。 該課程擁有超過 20 場現場會議和 14 多種工具和編程語言的實用知識,將引導您走向完美。 任何查詢都可以發送消息。 我們的團隊將為您提供幫助。

Python中有多少種錯誤類型?

Python 中主要有兩種可區分的錯誤類別——語法錯誤和異常。 語法錯誤:當任何代碼行有錯誤的語法時,就會導致語法錯誤。 這是最常見的錯誤,在程序解析期間會檢測到。 這些錯誤包括缺少運算符、不正確的縮進、關鍵字拼寫錯誤、缺少冒號、左括號以及語法中的其他微小錯誤。 異常:異常是在程序執行過程中檢測到的錯誤。 程序在語法測試成功後,會檢查邏輯錯誤。 Python 有豐富的內置異常集合。 您還可以創建自定義用戶定義的異常。

語法錯誤和異常之間的主要區別是什麼?

當代碼或代碼行語法錯誤時,就會發生語法錯誤。 當代碼中出現語法錯誤時,程序終止。 缺少冒號甚至拼寫錯誤的關鍵字也可能導致語法錯誤。
但是,例外情況完全不同。 異常可以被認為是擾亂程序流程的異常。 即使程序在語法上是正確的,也可能發生異常。 與錯誤不同,代碼執行到發生異常的行。

raise 關鍵字在 Python 中的作用是什麼?

raise 關鍵字用於在 Python 中引發異常。 錯誤的類型也可以一起提出,您還可以添加要在引發異常時顯示的文本。 當您需要檢查代碼的輸入時,它會非常方便。