[Python基礎]raise 引發異常(Exception)

2024/02/01閱讀時間約 3 分鐘

現實生活中,充滿的警報安全措施,總會設個安全線在那,若觸碰到底線時則會有警報響起

在Python也有類似的作法,如果希望在某個條件達到時,就拉起警報不要讓程式繼續進行下去,就適合使用raise

這種機制讓開發者能夠在程序執行時檢測到不正確的條件,然後通過引發異常停止程序執行通知使用者。


raise 的基本語法

raise 異常類型("錯誤訊息")

異常類型,可以是內建的異常類型(如 ValueErrorTypeError 等),也可以是自定義的異常類型。


異常類型:

以下是一些常見:

SyntaxError(語法錯誤):通常是由於代碼結構不正確而引起的錯誤。

# 例子:缺少冒號
if True
print("Hello")
SyntaxError

SyntaxError


TypeError(類型錯誤):當操作或函數應用於不適當類型的對象時引發。

# 例子:字符串無法與整數相加
result = "Hello" + 42
TypeError

TypeError


ValueError(值錯誤):當函數收到一個正確類型但無效值的引數時引發。

# 例子:int() 函數不能將字符串轉換為整數,除非字符串表示一個有效的整數
num = int("abc")
ValueError

ValueError


NameError(名稱錯誤):當試圖訪問未聲明的變量或函數時引發。

# 例子:變數 x 未定義
print(x)
NameError

NameError


FileNotFoundError(文件未找到錯誤):當試圖打開一個不存在的文件時引發。

# 例子:試圖打開不存在的文件
with open("nonexistent.txt", "r") as file:
content = file.read()
OSError

OSError


ZeroDivisionError(除以零錯誤):當嘗試除以零時引發。

# 例子:除以零
result = 10 / 0
ZeroDivisionError

ZeroDivisionError


自定義異常:

# 定義一個自定義異常類型
class MyCustomError(Exception):
pass

# 例子:引發自定義異常
raise MyCustomError("這是一個自定義異常")
MyCustomError

MyCustomError


程式範例

在這個例子中,divide 函數檢查 b 是否為零,如果是,則使用 raise 引發一個 ValueError

try:調用這個函數時result = divide(10, 0),由於 b 為零,將引發異常。

def divide(a, b):
if b == 0:
raise ValueError("除數不能為零")
return a / b

try:
result = divide(10, 0)
print(result) # 這行代碼不會執行,因為在 divide 函數中已經引發了異常
except ValueError as e:
print(f"錯誤: {e}")
# 在這裡可以進行一些錯誤處理,或者不做任何處理,程式將在這裡終止執行
程式結果圖

程式結果圖


raise用法可以使我們的程式碼有助於錯誤定位追蹤


處理例外(異常)try,except,else,finally語句

可以參考以下我的另外一篇文章

[Python基礎]處理例外(異常)try,except,else,finally語句





















49會員
88內容數
Python程式設計師,不是在學習就是在學習的路上
留言0
查看全部
發表第一個留言支持創作者!