Python 3.1 快速導覽 - 例外處理 try-except陳述

大部分執行中的錯誤, Python 直譯器 (interpreter) 會以發起例外 (exception) 的方式來中斷程式的執行。實際上,很多情況下我們需要自行控制可能會產生例外的程式碼,因為例外並不全然是程式的邏輯錯誤,例如程式中打算開啟檔案,然而實際檔名並不存在,這種情況下,我們需要的是例外發生後的處理動作,而非中止程式的執行。



凡是可能會產生例外的程式碼, Python 利用 try-except 陳述 (try-except statement) 讓程式設計師自行處理例外。 try-except 為關鍵字 (keyword) 之一,專門用來例外處理 (exception handling) 的。


基本形式就是把可能會產生例外的程式碼放在 try 之後的程式區塊 (block) , except 則放例外發生時的處置,如下例
a = 22
b = 33

try:
    if a < b:
        print(n)
except:
    print("except")

print("after exception....")

# 《程式語言教學誌》的範例程式
# http://pydoing.blogspot.com/
# 檔名:err04.py
# 功能:示範 Python 程式 
# 作者:張凱慶
# 時間:西元 2010 年 12 月 


執行後結果如下



由於第 6 行,這裡原本會產生 NameError ,但因為有 try-except 的例外處理,所以發生例外是執行 except 部份印出 "except" 的字串 (string) 。


如果沒有處理例外,程式執行到
print(n)


就會停止,而最後 "after exception...." 的字串也不會被印出。


例外的名稱也可以寫在 except 之後,如
except NameError:


如果一段程式碼有可能會發生多種例外,這樣的寫法可以分別處理不同種類的例外。


try-except 也可以和 else 連用, else 後的程式區塊放的是沒有發生例外,程式所執行的工作,例如
a = 22
b = 33

try:
    if a > b:
        print(n)
except:
    print("except")
else:
    print("else except")

print("after exception....")

# 《程式語言教學誌》的範例程式
# http://pydoing.blogspot.com/
# 檔名:err05.py
# 功能:示範 Python 程式 
# 作者:張凱慶
# 時間:西元 2010 年 12 月 


執行後結果如下



這裡因為 a > b 為假,所以例外不會發生,因此程式執行 else 的部份。


若加入另一個關鍵字 finally ,無論例外有沒有發生都會執行 finally 後的程式區塊。例如
a = 22
b = 33

try:
    if a < b:
        print(n)
except:
    print("except")
else:
    print("else except")
finally:
    print("finally")

print("after exception....")

# 《程式語言教學誌》的範例程式
# http://pydoing.blogspot.com/
# 檔名:err06.py
# 功能:示範 Python 程式 
# 作者:張凱慶
# 時間:西元 2010 年 12 月 


執行後結果如下



中英文術語對照
直譯器interpreter
例外exception
try-except 陳述try-except statement
關鍵字keyword
例外處理exception handling
區塊block
字串string






1 則留言:

匿名 提到...

Thanks for sharing the wonderful information! Accelerate your career by joining our Master’s Program in graphic design classes in the digital world. Our courses features:
The duration of the courses is 8 months
Assured Internship
Dedicated Mentorship and Career Assistance
521 Recorded Video Lectures
26 Weekly Live Sessions
Doubt solving sessions with the best tutor
Placement training and support
Practical Tasks and Portfolio Creation
Also, check out our other courses:
Digital Marketing Course
Photoshop tutorials in hindi
masters in UI/UX design in India
video editing course online