例外處理
在Python中,try
和 except
是用來處理異常的關鍵字。它們讓你能夠在代碼中檢測和處理可能引發異常的情況,以確保程序在遇到問題時不會崩潰,而是能夠優雅地處理錯誤情況。
基本用法
以下是 try
和 except
的基本用法:
try:
# 可能引發異常的代碼
result = 10 / 0 # 這裡故意引發了一個除零異常
except Exception as e:
# 異常處理代碼
print(f"發生異常: {e}")
在上面的代碼中,我們在 try
塊中放置了可能引發異常的代碼,這裡故意除以零引發了一個異常。然後,在 except
塊中,我們定義了異常處理代碼,它會捕獲並處理 Exception
類型的異常(這是一個通用的異常類型),然後印出異常信息。
你也可以捕獲特定類型的異常,例如:
try:
num = int("abc") # 這裡故意引發了一個 ValueError 異常
except ValueError as e:
print(f"數值轉換異常: {e}")
在這個例子中,我們只捕獲了 ValueError
異常,這是在試圖將字符串 “abc” 轉換為整數時引發的異常。
使用 try
和 except
可以確保你的程序在出現異常時不會崩潰,而是能夠以一種受控的方式處理異常情況,讓你能夠優雅地處理錯誤並採取適當的措施。
不同類型的異常
在Python中,你可以使用不同的 except
子句來捕獲不同類型的異常。
以下是一些常見的異常類型及其相應的 except
子句:
- 通用異常捕獲:你可以使用通用的
except
子句來捕獲所有類型的異常。這在除錯時可能很有用,但要小心不要濫用,因為它會捕獲所有異常,包括你未預期的異常。
pythonCopy code
try:
# 可能引發異常的代碼
except Exception as e:
# 異常處理代碼
- 指定特定異常類型:如果你只想捕獲特定類型的異常,可以指定相應的異常類型。
pythonCopy code
try:
# 可能引發異常的代碼
except ValueError as e:
# 處理 ValueError 異常
except ZeroDivisionError as e:
# 處理 ZeroDivisionError 異常
- 多個異常捕獲:你可以在一個
except
子句中捕獲多個異常類型,這樣可以使用相同的處理代碼處理它們。
try:
# 可能引發異常的代碼
except (ValueError, ZeroDivisionError) as e:
# 處理 ValueError 和 ZeroDivisionError 異常
- 捕獲所有異常:如果你希望捕獲所有異常,而不管它們的類型,可以使用
except
子句而不指定異常類型。
try:
# 可能引發異常的代碼
except:
# 處理所有異常
- 最終執行:你可以使用
finally
子句來指定無論是否發生異常都要執行的代碼。這通常用於清理工作,例如關閉文件或資源。
pythonCopy code
try:
# 可能引發異常的代碼
except SomeException as e:
# 處理異常
finally:
# 無論是否有異常,都會執行的代碼
請根據你的程序需要選擇適當的 except
子句,以確保你能夠處理預期的異常並優雅地處理錯誤情況。
異常類型
10個常見的Python異常類型
異常類型 | 說明 |
---|---|
SyntaxError | 程序語法錯誤,通常由不正確的程式碼引起。 |
IndentationError | 縮進錯誤,通常是由於錯誤的縮排或空格引起的。 |
NameError | 變量或名稱未定義引發的異常。 |
TypeError | 類型錯誤,當操作不支持的數據類型時引發。 |
ValueError | 值錯誤,通常與數值轉換或數值操作有關。 |
ZeroDivisionError | 除以零錯誤,當試圖除以零時引發。 |
FileNotFoundError | 文件未找到錯誤,當試圖打開不存在的文件時引發。 |
IndexError | 索引錯誤,當試圖訪問不存在的索引時引發。 |
KeyError | 鍵錯誤,通常與字典操作有關,試圖訪問不存在的鍵。 |
AttributeError | 屬性錯誤,當試圖訪問對象上不存在的屬性時引發。 |
結論
例外處理非常的實用,可以在程式發生異常的時候捕捉到,避免程式整個停止不動或提前結束,常常會搭配Log紀錄,讓你知道是哪變出錯了,工程師在查看問題的時候才有明確的知道問題,加快處理的時間。
系列文章
[Python教學]開發工具介紹
[開發工具] Google Colab 介紹
[Python教學] 資料型態
[Python教學] if判斷式
[Python教學] List 清單 和 Tuple元組
[Python教學] for 和 while 迴圈
[Python教學] Dictionary 字典 和 Set 集合
[Python教學] Dictionary 字典 和 Set 集合
[Python教學] Function 函示
[Python教學] Class 類別
最後最後有一件小小的請求,請大家幫我填寫一下問卷,
讓我們知道你想上怎麼樣課程,感激不盡。
問卷這邊