凡是可能會產生例外的程式碼, 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 |
參考資料
http://docs.python.org/py3k/tutorial/errors.html
http://docs.python.org/py3k/reference/compound_stmts.html
http://docs.python.org/py3k/tutorial/errors.html
http://docs.python.org/py3k/reference/compound_stmts.html
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
張貼留言