什麼是 Bug?
所有不能按照設計執行的程式都可以稱為有「Bug」,就是程式執行中出現的錯誤而造成的功能不正常,甚至導致程式的崩潰。那 「Bug」 一詞的由來是因為什麼呢? 在1947年9月9日,發現了第一個電腦上的「Bug」,發現原來是一隻飛蛾意外飛入了一台電腦內部而引起了故障,也因此大家開始逐漸開始用「Bug」,就是用 蟲子 來稱呼電腦中的錯誤。
什麼是異常?
- 在 Python 中一切都是對象,異常是一個對象,表示一個錯誤
- 程式遇到一些不能處理的情況,就拋出異常
- 異常會導致程式崩潰而停止運行
程式需要異常來做什麼?
程式出錯我不就才知道我的程式錯在哪裡?我該怎麼去修正改善。正因為自己是開發者或維護者才需要錯誤訊息,但假如你是使用者呢?在你跟程式互動中,使用者體驗應該是最重要的,廣泛的大眾有著你超乎想像的破壞力……或是想像力……嗯……超能力。
想想我們在玩遊戲的時候是用多暴力的方式去探索遊戲世界。
所以在能先考慮到一些例外的使用,我們可以先做處理,保證程式的良好運行。能夠幫助我們監控程式的運作,透過捕獲到的異常類型,幫我們把異常部位的程式碼進行處理讓,程式能夠繼續正常運行使用。
異常能幫助我們找出錯誤發生的地點、過程,跟柯男找兇手一樣,兇手就在我們之間,透過不同的線索 (error)幫我們找出錯誤的真相。
常見的異常類型
Exception 通用的異常類型
ZeroDivisionError 不能整除0
AttributeError 物件沒有這個屬性
IOError 輸入輸出操作失敗
IndexError 沒有當前索引
KeyError 沒有這個鍵值
NameError 沒有這個變量
ValueError 傳入的參數錯誤
如何捕獲異常?
如果有可能會引發異常的一些的程式區塊,就可以放在 try 中保護你的程式。而發生異常錯誤後解決的方式我們放在 except 中。
我們來舉例一個簡單的例子:
當數字除以零,答案會變成無限大,所以會出現錯誤而導致程式停止。
但當我們使用異常處理呢?
加入了異常處理,並給一個異常類型 (用 as 給異常類型取個別名),讓程式印出錯誤訊息,而不是停止程式。
我們也可以同時捕獲多個異常,可以用這兩種方式來實現。來看看以下例子:
例一:
例二:
else 的功能
- 沒有異常時執行的程式碼
看個簡單的例子:
finally 的功能
- 無論是否發生異常,一定會執行的地方
- 即使在 try 或 except 中進行了 return 也依然會執行 finally 的程式碼
再來看個簡單的例子:
自定義拋出異常函式 — raise
以上示範的例子都是捕獲程式內建的異常,那能不能自己定義異常呢 ?我們來試試 !
通過閱讀本文,希望能讓您對異常的概念有個基本的了解,在捕獲異常的操作中從而可以讓您利用在設計上有個更好的想法。以上的幾個小範例希望能幫助到您,從而發覺更好的使用者互動體驗。