Python Try Except:分步示例

Python Try Except:分步示例

作為一名程序員,您可能會遇到代碼可能會遇到錯誤或異常的情況,因此了解如何處理代碼中不同類型的錯誤至關重要。處理錯誤是編碼週期的關鍵部分。在 Python 中處理錯誤的一種常見方法是使用 try-except 技術。

Python try-except 技術由一個 try 塊一個 except 塊組成。try 塊包含可能產生錯誤或異常的代碼,except 塊包含處理這些錯誤或異常的代碼。

Python Try Except:分步示例

當您的代碼在 try 塊中運行沒有任何問題時,將繞過 except 塊。但是,如果在 try 塊中發生錯誤或異常,您在 except 塊中編寫的代碼將執行以解決該問題。

在本文中,我們將討論Python 的try-expect 塊、您在編寫代碼時可能遇到的不同類型的錯誤和異常,以及如何使用 try-except 語句處理它們。

讓我們開始吧!

目錄

Python 中的錯誤類型是什麼?

在 Python 中,錯誤大致可以分為兩種主要類型:

1.語法錯誤:這些也稱為代碼中不正確的語法引起的解析錯誤。語法錯誤由 Python 解釋器檢測並停止程序的執行。

以下是Python 語法錯誤的示例:

print("Hello, world!"

在這個例子中,右括號丟失了,所以 Python 不理解這條指令,因此這是一個語法錯誤。

Python Try Except:分步示例

異常:在程序執行過程中出現錯誤時會發生異常,即使代碼在語法上是正確的。這些可能包括邏輯錯誤或運行時錯誤,例如無效輸入或被零除。

以下函數是 Python 中的異常示例:

print(5 / 0)

這行代碼將導致 ZeroDivisionError 異常,當您嘗試將數字除以零時會發生這種情況。

Python Try Except:分步示例

在上圖中,您可以看到我們將 5 除以 0 時發生了異常。

現在您已經了解 Python 中存在哪些異常,我們將了解如何在 Python 中使用 Try-Except 語句處理異常。讓我們在下一節中看一下 Python 中 Try 和 Except 塊的語法。

Try 和 Except 塊的語法是什麼?

函數的語法定義了您應該如何在代碼中使用該函數,包括它接受的參數和返回的內容。

我們在下面列出了 try 子句和 except 塊的語法,以及else子句和finally塊。

1. Try語句的語法

try語句允許您測試代碼塊是否有錯誤。當您在try塊中編寫代碼時,Python 會將其作為程序的正常部分執行。

要使用try語句,只需將您的代碼包含在try塊中:

try: # Your code here

2. Except 從句的語法

except子句處理try塊執行期間可能發生錯誤。您可以指定要捕獲的異常類型或使用通用的except語句來處理所有異常。

以下語法顯示了特定的異常類型:

try: # Your code here except ValueError: # Handle ValueError exception

要處理一般異常類或多個異常,您可以使用下面給出的語法:

try: # Your code here except Exception: # Handle any exception

3. Else 從句/塊的語法

else子句允許您在try塊中沒有錯誤時執行代碼塊。

要使用else子句,您可以將其放在except塊之後,如下所示:

try: # Your code here except ValueError: # Handle ValueError exception else: # Code to execute when there are no errors

4.Finally塊的語法

finally塊允許您執行代碼,而不管tryexcept塊結果如何。這對於無論是否引發異常都希望執行的操作很有用。

要使用finally塊,您可以將它放在else塊之後:

try: # Your code here except ValueError: # Handle ValueError exception else: # Code to execute when there are no errors finally: # Code to execute regardless of the result of the try and except blocks

要查看上述語法的實際效果,我們將看一個使用 Python 中的 try-except 塊處理異常的示例。

在 Python 中使用 Try-Except 處理異常

發生錯誤時,Python 通常會停止並生成錯誤消息。您可以使用tryexcept塊處理多個異常。

在下面的示例中,我們處理了之前將 5 除以 0 時產生的被零除錯誤。

try: print(5 / 0) except ZeroDivisionError: print("You can't divide by zero!")

在這段代碼中,發生了異常,但程序會繼續運行並打印出“You can't divide by zero!” 而不是因錯誤而停止。

Python Try Except:分步示例

使用tryexcept塊允許您控製程序的流程。通過處理特定的異常,您可以向用戶提供有用的反饋,並在出現錯誤時讓您的程序保持運行。

在上面的示例中,您可以看到我們使用了 ZeroDivisionError 內置異常來處理這種情況。與此類似,還有其他類型的內置異常。

熟悉這些異常類型將幫助您決定在 Python 代碼中遇到錯誤時使用哪種期望,因此讓我們在下一節中了解一些異常。

內置異常有哪些類型?

在 Python 中,異常是從 BaseException 類派生的類的實例。當檢測到錯誤時,Python 會引發異常。在用 Python 編寫程序時,您可能會遇到幾個內置異常。

讓我們來看看一些最常見的:

  1. ZeroDivisionError:當您嘗試將數字除以零時會發生這種情況。

  2. NameError:當您嘗試使用尚未定義的變量或函數時會引發此錯誤。

  3. ValueError:當您傳遞類型正確但值無效的參數時發生。

  4. TypeError:當您傳遞錯誤數據類型的參數時會發生這種情況。

  5. FileNotFoundError:當您嘗試打開或訪問不存在的文件時發生。

  6. ImportError:當您嘗試導入不存在或找不到的模塊或包時引發。

其他相關例外情況包括:

  1. OverflowError:當計算結果太大而無法表示時會引發此錯誤。

  2. FloatingPointError:浮點運算失敗時會引發此錯誤。

  3. IndexError:當您嘗試訪問超出序列範圍(例如,列表或元組)的索引時發生。

  4. KeyError:當您嘗試訪問字典中不存在的鍵時發生。

  5. EOFError:當 Python 在讀取輸入(通常來自 read() 調用)時遇到文件結尾 (EOF) 時引發。

  6. ArithmeticError:算術異常的超類,例如 ZeroDivisionError、OverflowError 和 FloatingPointError。

有時,可能需要在預期出現異常的塊中使用用戶定義的異常,例如pass語句。這應該明智地完成,因為它可能會抑制其他異常。

我們為您提供了上面的常見異常錯誤列表,以便您在編寫 Python程序時可以將其用作處理可能的異常的指南。

請注意,大多數異常都可以被捕獲和處理,但應注意處理最近的調用,以避免嵌套處理其他異常情況。

在下一節中,我們將研究Python 中 try-except 塊的一些用例。讓我們開始吧!

Try-Except 塊的 5 個用例

Try Except 塊是廣泛使用的錯誤處理技術之一。以下是 Python 中 Try Except 塊的一些用例:

1. 用 Try Except 處理文件

使用文件時,文件不存在或不在您的腳本嘗試訪問它的位置的可能性總是存在的。

當我們嘗試打開一個不存在的文件時,以下代碼將引發異常。

try: with open('file.txt', 'r') as file: print(file.read()) except FileNotFoundError: print('Sorry, this file does not exist.')

在這段代碼中,我們試圖打開並讀取一個名為“file.txt”的文件。如果“file.txt”不存在,則會發生異常,但不會出現停止程序的錯誤,而是會打印“抱歉,此文件不存在”。

Python Try Except:分步示例

2. 使用 Try Except 處理用戶輸入

用戶輸入是另一個經常發生異常的地方。用戶可能會以意想不到的格式提供數據,或者提供超出可接受範圍的輸入。

以下示例顯示如何使用 try-except 塊處理用戶輸入:

try: age = int(input("Enter your age: ")) except ValueError: print("That's not a valid age. Please enter a number.")

在這段代碼中,我們要求用戶輸入他們的年齡。如果他們輸入無法轉換為整數的內容(如單詞或字母),則會發生異常,但程序不會崩潰,而是會打印“That's not a valid age.”。請輸入一個數字。

Python Try Except:分步示例

3.訪問不存在的字典鍵

在 Python 中,字典是一個可變的、無序的鍵值對集合,其中每個鍵都必須是唯一的。

當您嘗試訪問字典中不存在的鍵時,Python 會引發 KeyError。您可以使用 try 和 except 來處理此異常,如下例所示:

dictionary = {"key1": "value1", "key2": "value2"} try: print(dictionary["key3"]) except KeyError: print("The key does not exist in the dictionary.")

在此代碼中,您試圖從字典中打印“key3”的值。如果字典中不存在“key3”,則會發生異常,但程序不會因錯誤而停止,而是會打印“字典中不存在鍵”。

Python Try Except:分步示例

4. 將字符串轉換為整數

有時您可能希望將字符串轉換為整數。但如果字符串不代表有效整數,Python 將引發 ValueError。

您可以使用 try 和 except 來處理這種情況:

try: num = int("hello") except ValueError: print("That string can't be converted to integer.")

在這種情況下,“hello”無法轉換為整數,因此 Python 會引發 ValueError 並打印“That string can't be converted to integer”。

Python Try Except:分步示例

5.導入模塊

在 Python 中導入模塊時,該模塊可能不存在或未安裝。在這種情況下,Python 將引發 ImportError。

要處理這種情況,您可以使用以下代碼:

try: import some_module except ImportError: print("The module 'some_module' is not installed.")

在上面的示例中,如果“some_module”未安裝或不存在,Python 將引發 ImportError 並打印“The module 'some_module' is not installed.'”。

Python Try Except:分步示例

要了解有關使用 Python 編寫代碼和處理期望的更多信息,請查看以下視頻:

接下來,我們將了解一些處理異常的最佳實踐。讓我們深入研究吧!

異常處理最佳實踐

在本節中,我們列出了一些使用 Try Except 塊處理異常的最佳實踐。處理異常的一些最佳實踐是:

1. 例外情況要具體

在編寫代碼時,盡可能具體地捕獲異常至關重要。這意味著您應該捕獲您期望的實際異常類型,而不是僅僅捕獲一般異常名稱。

這樣,您就可以確切地知道發生了什麼樣的錯誤,並且您將能夠適當地處理它。

2. 不要抑制異常

當您處理異常時,您可能會想用異常處理程序捕獲它而不對它做任何事情。這通常是個壞主意。

如果發生錯誤,通常是因為有一些東西需要修復。如果您抑制異常類,錯誤可能不會被注意到並在以後導致問題。

3.最後使用清理代碼

有時,無論是否發生錯誤,您都需要運行一些代碼。這可能類似於關閉文件或釋放一些資源。

在這些情況下,您可以使用finally塊。finally塊中的代碼無論如何都會運行,因此這是放置清理代碼的好地方。

try: # Some code here finally: # This code will run no matter what

4.必要時引發異常

在某些情況下,您需要讓代碼的用戶知道出現問題。

在這些情況下,您可以引發異常。這將立即停止代碼的執行並通知用戶發生了錯誤。

if not valid_input: raise ValueError("Your input was not valid!")

了解並實施這些最佳實踐將使您的代碼更健壯、更易於調試並防止意外崩潰。

最後的想法

總而言之,了解如何在 Python 中使用 try 和 except 確實有助於編寫代碼並在其中遇到異常。

它們讓您的程序順利處理錯誤,而不是突然停止。這是一種確保您的代碼能夠處理意外情況並繼續運行的方法。

另外,當您使用 try 和 except 時,它表明您真的在考慮可能出現的問題並為它做好準備。所以花點時間學習這些工具——當你用 Python 編寫代碼時,它們非常有用!


什麼是 Python 中的自我:真實世界的例子

什麼是 Python 中的自我:真實世界的例子

什麼是 Python 中的自我:真實世界的例子

如何在 R 中保存和加載 RDS 文件

如何在 R 中保存和加載 RDS 文件

您將學習如何在 R 中保存和加載 .rds 文件中的對象。本博客還將介紹如何將對像從 R 導入 LuckyTemplates。

回顧前 N 個工作日——DAX 編碼語言解決方案

回顧前 N 個工作日——DAX 編碼語言解決方案

在此 DAX 編碼語言教程中,了解如何使用 GENERATE 函數以及如何動態更改度量標題。

在 LuckyTemplates 中使用多線程動態視覺技術展示見解

在 LuckyTemplates 中使用多線程動態視覺技術展示見解

本教程將介紹如何使用多線程動態可視化技術從報告中的動態數據可視化中創建見解。

LuckyTemplates 篩選上下文簡介

LuckyTemplates 篩選上下文簡介

在本文中,我將貫穿過濾器上下文。篩選上下文是任何 LuckyTemplates 用戶最初應該了解的主要主題之一。

使用 LuckyTemplates 在線服務中的應用程序的最佳技巧

使用 LuckyTemplates 在線服務中的應用程序的最佳技巧

我想展示 LuckyTemplates Apps 在線服務如何幫助管理從各種來源生成的不同報告和見解。

隨著時間的推移分析利潤率變化——使用 LuckyTemplates 和 DAX 進行分析

隨著時間的推移分析利潤率變化——使用 LuckyTemplates 和 DAX 進行分析

了解如何在 LuckyTemplates 中使用度量分支和組合 DAX 公式等技術計算利潤率變化。

DAX Studio 中數據緩存的物化想法

DAX Studio 中數據緩存的物化想法

本教程將討論數據緩存物化的想法,以及它們如何影響 DAX 在提供結果時的性能。

使用 LuckyTemplates 進行業務報告

使用 LuckyTemplates 進行業務報告

如果直到現在你還在使用 Excel,那麼現在是開始使用 LuckyTemplates 來滿足你的業務報告需求的最佳時機。

什麼是 LuckyTemplates 網關?所有你必須知道的

什麼是 LuckyTemplates 網關?所有你必須知道的

什麼是 LuckyTemplates 網關?所有你必須知道的