關鍵字 (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 |
$ |
相關教學影片