在現實生活中,充滿的警報及安全措施,總會設個安全線在那,若觸碰到底線時則會有警報響起。
在Python也有類似的作法,如果希望在某個條件達到時,就拉起警報不要讓程式繼續進行下去,就適合使用raise
這種機制讓開發者能夠在程序執行時檢測到不正確的條件,然後通過引發異常停止程序的執行或通知使用者。
raise
的基本語法raise 異常類型("錯誤訊息")
異常類型,可以是內建的異常類型(如 ValueError
、TypeError
等),也可以是自定義的異常類型。
以下是一些常見:
SyntaxError
(語法錯誤):通常是由於代碼結構不正確而引起的錯誤。
# 例子:缺少冒號
if True
print("Hello")
TypeError
(類型錯誤):當操作或函數應用於不適當類型的對象時引發。
# 例子:字符串無法與整數相加
result = "Hello" + 42
ValueError
(值錯誤):當函數收到一個正確類型但無效值的引數時引發。
# 例子:int() 函數不能將字符串轉換為整數,除非字符串表示一個有效的整數
num = int("abc")
NameError
(名稱錯誤):當試圖訪問未聲明的變量或函數時引發。
# 例子:變數 x 未定義
print(x)
FileNotFoundError
(文件未找到錯誤):當試圖打開一個不存在的文件時引發。
# 例子:試圖打開不存在的文件
with open("nonexistent.txt", "r") as file:
content = file.read()
ZeroDivisionError
(除以零錯誤):當嘗試除以零時引發。
# 例子:除以零
result = 10 / 0
# 定義一個自定義異常類型
class MyCustomError(Exception):
pass
# 例子:引發自定義異常
raise 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}")
# 在這裡可以進行一些錯誤處理,或者不做任何處理,程式將在這裡終止執行
處理例外(異常)try,except,else,finally語句
可以參考以下我的另外一篇文章
[Python基礎]處理例外(異常)try,except,else,finally語句