iT邦幫忙

第 11 屆 iThome 鐵人賽

DAY 29
0

Part1.例外處理簡介

學習目標

  • 何謂「例外」(Exception)?

  • 為什麼需要有「例外」機制?

  • Python 例外機制的長相

何謂「例外(Exception)」

  • 定義

    • 程式執行過程中,足以中斷程式執行的錯誤

    https://ithelp.ithome.com.tw/upload/images/20191015/20120926KpUzD4u3G1.png

如果沒有「例外處理」機制…

https://ithelp.ithome.com.tw/upload/images/20191015/20120926SDiymHCAxv.png

您或許會用 if ~ else 處理…

https://ithelp.ithome.com.tw/upload/images/20191015/20120926LgQCnLcnso.png

Python 的例外處理機制…

https://ithelp.ithome.com.tw/upload/images/20191015/20120926jKmDBXoOw8.png

重點整理

  • 何謂「例外」(Exception)?

    • 任何足以中斷程式執行的錯誤

  • 為何需要有「例外」機制?

    • 為了就算發生錯誤,程式控制權仍在我們手上,不致於中斷執行

    • 為了提供容易了解的錯誤訊息,給不知情的使用者

    • 為了發生錯誤後,能讓使用者有修正的機會

  • Python 例外機制的長相

    • try ~ except ~ else 語法


Part2.例外捕捉

學習目標

  • Python 例外處理的語法

  • 常見的例外有哪些?

  • 例外處理範例

例外處理語法

https://ithelp.ithome.com.tw/upload/images/20191015/20120926Gb7LK77N4u.png

Python 常見的例外類型

https://ithelp.ithome.com.tw/upload/images/20191015/20120926NEgtReYcDD.png
參考官方網站說明:
Built-in Exceptions

重點整理

  • Python 例外處理的語法

    • try ~ except ~ else ~ finally

    • try:主程式區(監視區)

    • except:例外處理區

    • else:無錯誤區

    • finally:收尾程式碼區

  • 常見的例外有哪些?


Part3.自訂例外

學習目標

  • 自訂例外的步驟

  • 自訂例外的範例

自訂例外步驟

  • 為你的例外建立一個類別,並繼承 Exception 類別

    • 如:class SalaryException(Exception)

  • 在需要丟出該例外類別的場合,使用 raise 指令

    • 如:raise SalaryException()

  • 在主程式攔截該例外

    • 用 try ~ except 攔截 SalaryException

自訂例外的範例(取自老師上課範例)

  • 限制加薪幅度不得大於 5%,否則丟出例外警告之

    • 先開啟「物件導向」章節的 HRSystem 專案的 employee.py 檔案

    https://ithelp.ithome.com.tw/upload/images/20191015/20120926YfjW8TEcOu.png
  • 建立繼承 Exception 的 SalaryException 類別

https://ithelp.ithome.com.tw/upload/images/20191015/20120926hiuhIvix1d.png

  • 新增 .raiseSalary() 方法

https://ithelp.ithome.com.tw/upload/images/20191015/20120926ccjyEy0I8n.png

  • 主程式:攔截 SalaryException

https://ithelp.ithome.com.tw/upload/images/20191015/20120926jY2uApX0gp.png

重點整理

  • 自訂例外步驟

    • 建立一個例外類別,並使該類別繼承 Exception。

    • 在需要丟出該例外類別的場合,使用 raise 指令

    • 在主程式使用 try ~ except 攔截該例外


上一篇
Day28-物件導向設計封裝部分:建構函數(Constructor)
下一篇
Day30-總結30 天
系列文
從不懂,到玩上手的Python語言30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言