Python 速查手冊

4.4 簡單陳述 raise

本書已有新版,請參考 Python 簡易手冊 - 目錄

關鍵字 (keyword) raise 用來發起例外 (exception) ,所謂例外是指已知有可能發生的錯誤 (error) ,只要程式 (program) 執行過程中發生例外,程式就會中斷執行,並且在命令列上印出錯誤訊息。

所有例外類別都要繼承 (inherit) 自 BaseException 類別 (class) ,這裡直接在互動式介面用 raise 發起 BaseException 例外,並以 "Error" 字串 (string) 當參數 (parameter) ,所以 Traceback 訊息在 BaseException 之後顯示 Error

raise BaseException("Error")

#《程式語言教學誌》的範例程式
# http://kaiching.org/
# 檔名:raise01.py
# 功能:示範 return 陳述
# 作者:張凱慶

於命令列執行以上程式,結果如下

$ python3 raise01.py
Traceback (most recent call last):
  File "raise01.py", line 1, in <module>
    raise BaseException("Error")
BaseException: Error
$

這裡示範 ExampleError 類別繼承 BaseException ,然後發起 ExampleError 的例外

class ExampleError(BaseException):
    pass

raise ExampleError("Error")

#《程式語言教學誌》的範例程式
# http://kaiching.org/
# 檔名:raise02.py
# 功能:示範 return 陳述
# 作者:張凱慶

於命令列執行以上程式,結果如下

$ python3 raise02.py
Traceback (most recent call last):
  File "raise02.py", line 4, in <module>
    raise ExampleError("Error")
__main__.ExampleError: Error
$

假設做除法要檢查除數是否為 0 ,當除數為 0 時,就可用 raise 發起例外來中斷程式

class ExampleError(BaseException):
    pass

a = 1
b = 0
if b == 0:
    raise ExampleError("b==0")

#《程式語言教學誌》的範例程式
# http://kaiching.org/
# 檔名:raise03.py
# 功能:示範 return 陳述
# 作者:張凱慶

於命令列執行以上程式,結果如下

$ python3 raise03.py
Traceback (most recent call last):
  File "raise03.py", line 7, in <module>
    raise ExampleError("b==0")
__main__.ExampleError: b==0
$

由於例外發生後,程式就會中斷不再執行,如果想要程式繼續執行,就要用 try-except 做例外處理 (exception handling) ,基本上需要處理所有可能發生的例外

try:
    a = 1
    b = 0
    r = a / b
except:
    print("b==0")

#《程式語言教學誌》的範例程式
# http://kaiching.org/
# 檔名:raise04.py
# 功能:示範 return 陳述
# 作者:張凱慶

於命令列執行以上程式,結果如下

$ python3 raise04.py
b==0
$

相關教學影片

上一頁: 4.3 簡單陳述 return
Python 速查手冊 - 目錄
下一頁: 4.5 簡單陳述 break
回 Python 教材首頁
回程式語言教材首頁