在程序執行過程中,遇到出錯情況在所難免。有些錯誤可以預料,可在程序處理中考慮進去;有些錯誤是意料之外的,例如,若在讀取文件其間,計算機上的其他程序已將其刪除,如何處理?若程序從網站下載網頁時,該網站突然崩潰,如何處理?
Python採用的措施是引發異常。異常是一種特殊的錯誤對象,程序可以捕獲並檢查它們,以決定如何處理錯誤。 異常可能改變程序的控制流程。根據發生的時機,異常可能導致執行流程跳出函數或進入處理錯誤的代碼塊。
通常,我們無法確定哪一行可能引發異常,Python提供了一個特殊的異常處理結構,可用於捕獲異常,並確保無論是否出現異常都將執行清理代碼。
常見的異常類型:
SyntaxError:Python 不能理解程序
NameError:局部或全局變數名找不到
AttributeError:屬性引用失敗
IndexError:索引引用越界
TypeError:操作數的類型不正確
ValueError:操作數類型正確,但值非法
ZeroDivisionError:被零除
FileNotFoundError:文件未找到
IOError:IO system 報告故障
例如:1. 試圖存取列表上界之外的元素將引發IndexError
如:Test = [1,2,3]
Test[4]
2. 試圖轉換不適當的類型將引發TypeError
如:int(Test)
3. 引用不存在的變數將引發NameError
如:a4. 不同的數據類型參加運算而沒有強制類型轉換將引發TypeError
如:『a』/4
如何處理異常?
- 什麼都不做:替換成預設值,使程序繼續執行
- 返回一個「error」值
- 選擇一個什麼樣的錯誤值?
- 主調程序必須包含檢查這種特殊值和處理一系列錯誤的代碼
- 停止執行,發出錯誤條件信號
例:傳統處理程序出錯及Python處理異常比較
- 編寫函數getRatios(v1, v2)。
- 假定參數v1、v2是等長的數字列表,要求返回一個列表,該列表包含v1[i]/v2[i]有意義的值。
1. 使用傳統程序設計方法處理錯誤:
TAG:Python入門 | Python開發 | Python |