Python:異常處理
阿新 • • 發佈:2018-12-19
異常 exception (基礎)
什麼是錯誤
錯誤是指由於邏輯或語法等導致程式無法正常執行的問題
特點
無法預知
什麼是異常
異常是程式出錯時標識的一種狀態.當導常發生時,程式不會再
向下執行,而轉去呼叫此函式的地方待處理此錯誤並恢復為正常狀態
作用:
用作訊號通知,通知上層呼叫者有錯誤產生需要處理
程式有兩種狀態:
正常狀態/異常狀態
try語句 的兩種語法
try-except語句 try-finally語句 try-except語句的語法 try: 可能觸發異常的語句 except 錯誤型別1 [as 變數1]: 異常處理語句1 except 錯誤型別2 [as 變數2]: 異常處理語句2 except (錯誤型別3, 錯誤型別4) [as 變數3]: 異常處理語句3 ... except: 異常處理語句other else: 末發生異常的語句 finally: 最終語句 作用: 償試捕獲錯誤,得到異常通知,將程式由異常狀態轉換為正常狀態並 繼續執行 說明: as 子句是用於繫結錯誤物件的變數,可以省略 except 子句可以有一個或多個,但至少要有一個 else 子句最多隻能有一個.也可以省略 finally子句最多隻能有一個.也可以省略 (錯誤型別,可能後期補充) try-finally 語句 語法 try: 可能觸發異常的語句 finally: 最終語句 說明: finally子句不可以省略 一定不存在except子句 作用: 通常用try-finally語句來做觸發異常時必須要處理的事情 無論異常是否發生,finally子句都會被執行 注: try-finally語句不會改變程式的(正常/異常)狀態
在這裡插入程式碼片
raise 語句
作用:
觸發一個錯誤,讓程式進入異常狀態
傳送錯誤通知給呼叫者
語法:
raise 異常型別
或
raise 異常物件
或
raise # 重新觸發上一次異常
示例:
raise ValueError #
raise ValueError("???????")
示例見:
raise.py
raise2.py
assert語句(斷言語句)
語法: assert 真值表達式, 錯誤資料(通常是字串) 作用: 當真值表示式為False時,用錯誤資料建立一個 AssertionError型別的錯誤,並進入異常狀態 通常用來故意製造一個錯誤 等同於: if bool(真值表達式) == False: raise AssertionError(錯誤資料) 異常中的語句小結: try-except 語句 用於捕獲(接收)錯誤通知,把異常狀態轉為正常狀態 try-finally語句 用於執行在任何狀態(正常/異常)都必須要執行的語句 raise 語句 觸發錯誤(傳送錯誤通知),讓程式進入異常狀態 assert 語句 根據條件觸發AssertionError型別的錯誤通知
迭代器 Iterator
什麼是迭代器
迭代器是訪問可迭代物件的工具
迭代器是指iter(obj) 函式返回的物件(例項)
迭代器可以用next(it) 函式獲取可迭代物件的資料
迭代器函式iter和next
iter(iterable) 從可迭代物件中獲取一個迭代器,iterable
必須是能提供一個迭代器的可迭代物件
next(Iterator) 從迭代器iterator中獲取下一個記錄,如
果無法獲取下一條記錄,則觸發StopIteration異常
說明:
迭代器只能往前取值,不會後退
用iter函式可以返回一個可迭代物件的迭代器
示例: L = [2, 3, 5, 7] it = iter(L) # 從L物件中獲取一個迭代器 print(next(it)) # 2 print(next(it)) # 3 print(next(it)) # 5 print(next(it)) # 7 print(next(it)) # StopIteration 異常 # 用迭代器訪問 range() 函式返回的整數序列生成器 it = iter(range(1, 10, 3)) next(it) # 1 next(it) # 4 next(it) # 7 next(it) # StopIteration