python有兩種錯誤很容易辨認:語法錯誤和異常。
python常見異常總結:
異常描述
assertionerror
斷言語句(assert)失敗
attributeerror
嘗試訪問未知的物件屬性
importerror
匯入模組失敗
indexerror
索引超出序列範圍
keyerror
字典中查詢乙個不存在的關鍵字
memoryerror
記憶體溢位,可通過刪除物件釋放記憶體
nameerror
嘗試訪問乙個不存在的變數
oserror
作業系統產生的異常(如開啟乙個不存在的檔案)
overflowerror
數值運算超出最大限制
syntaxerror
語法錯誤
typeerror
不同型別間的無效操作
valueerror
傳入無效的引數
zerodivisionerror
除數為零
異常處理
(1)try-except語句
語法:
try語句按照如下方式工作:try:
檢測範圍
except exception[as reason]:
出現異常後的處理**
example1:
example2:try:
a=10/0
print(a)
except zerodivisionerror :
print('除數不能為零')
結果: 除數不能為零
(2)try-except-finally語句try:
a=10/0
print(a)
except zerodivisionerror as error:
print('運算錯誤\n原因是:',str(error))
結果:運算錯誤
原因是: division by zero
語法:
不管try子句裡面有沒有發生異常,finally子句都會被執行。try:
檢測範圍
except exception[as reason]:
出現異常後的處理**
finally:
無論如何都會被執行的語句
如果乙個異常在try子句裡被丟擲,而又沒有任何的except把它截住,那麼這個異常會在finally子句執行後被丟擲。如:
(3)raise語句def divide(x, y):
try:
result = x / y
print("result is", result)
except zerodivisionerror:
print("division by zero!")
finally:
print("executing finally clause")
divide(2,1)
divide(2,0)
divide('a','b')
結果:result is 2.0
executing finally clause # divide(2,1)
division by zero!
executing finally clause # divide(2,0)
executing finally clause
typeerror: unsupported operand type(s) for /: 'str' and 'str' # divide('a','b')
python使用raise語句丟擲乙個指定異常
try:
raise nameerror('problem here')
except nameerror:
print('這是乙個指定異常!')
結果: 這是乙個指定異常!
Python高階08 異常處理
異常處理 在專案開發中,異常處理是不可或缺的。異常處理幫助人們debug,通過更加豐富的資訊,讓人們更容易找到bug的所在。異常處理還可以提高程式的容錯性。我們之前在講迴圈物件的時候,曾提到乙個stopiteration的異常,該異常是在迴圈物件窮盡所有元素時的報錯。我們以它為例,來說明基本的異常處...
Python高階08 異常處理
本文特別感謝kylinfish 在專案開發中,異常處理是不可或缺的。異常處理幫助人們debug,通過更加豐富的資訊,讓人們更容易找到bug的所在。異常處理還可以提高程式的容錯性。我們之前在講迴圈物件的時候,曾提到乙個stopiteration的異常,該異常是在迴圈物件窮盡所有元素時的報錯。我們以它為...
Python高階08 異常處理
本文特別感謝kylinfish 在專案開發中,異常處理是不可或缺的。異常處理幫助人們debug,通過更加豐富的資訊,讓人們更容易找到bug的所在。異常處理還可以提高程式的容錯性。我們之前在講迴圈物件的時候,曾提到乙個stopiteration的異常,該異常是在迴圈物件窮盡所有元素時的報錯。我們以它為...