Python 簡易手冊

單元 27 - raise 陳述

關鍵字 (keyword) raise 用來直接發起例外 (exception) ,主要作用除錯 (debug) ,例如特定情況需要額外處理,就放到例外處理中解決,以下為簡單例子

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
# 對可能會出錯的程式碼例外處理
try:
    # 直接發起例外
    raise Exception("A++")
except Exception as e:
    # 印出例外名稱
    print(e)

# 檔名: raise_demo.py
# 說明: 《Python簡易手冊》的範例
# 網址: http://kaiching.org
# 作者: Kaiching Chang
# 時間: 2024 年 3 月

這裡在第 4 行發起例外,然後例外處理直接印出例外名稱,執行結果如下

> python raise_demo.py
A++
>

單元 26 - try 陳述詳細介紹例外處理的寫法。

但有時候也是除錯需要,例如上例發起 A++ 例外,卻希望直譯器 (interpreter) 顯示另一個名稱,像是 B++ ,這時候 except 的部分可以再用 raise 發起 B++ 例外,但是最後要加上 from None ,例如

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
# 對可能會出錯的程式碼例外處理
try:
    # 直接發起例外
    raise Exception("A++")
except Exception:
    # 將原本的例外名稱改名
    raise Exception("B++") from None

# 檔名: raise_demo2.py
# 說明: 《Python簡易手冊》的範例
# 網址: http://kaiching.org
# 作者: Kaiching Chang
# 時間: 2024 年 3 月

第 7 行發起 B++ 例外並且加上 from None ,執行結果如下

> python raise_demo2.py
Traceback (most recent call last):
  File "raise_demo2.py", line 7, in >module<
    raise Exception("B++") from None
Exception: B++
>

如果不加上 from None ,直譯器發起例外會多顯示 A++ 例外,然後才顯示 B++ 例外,所以 from None 是簡化直譯器中斷執行後顯示例外的行數。

except 底下可以再放 try-except 做例外處理,缺點是會大幅增加程式碼行數。

參考資料

上一頁 單元 26 - try 陳述
回 Python 簡易手冊 首頁
下一頁 單元 28 - with 陳述
回 Python 教材首頁
回程式語言教材首頁