Python基礎08 異常與處理

2021-09-29 04:38:32 字數 2101 閱讀 3950

python有兩種錯誤很容易辨認:語法錯誤和異常。

python常見異常總結:

異常描述

assertionerror

斷言語句(assert)失敗

attributeerror

嘗試訪問未知的物件屬性

importerror

匯入模組失敗

indexerror

索引超出序列範圍

keyerror

字典中查詢乙個不存在的關鍵字

memoryerror

記憶體溢位,可通過刪除物件釋放記憶體

nameerror

嘗試訪問乙個不存在的變數

oserror

作業系統產生的異常(如開啟乙個不存在的檔案)

overflowerror

數值運算超出最大限制

syntaxerror

語法錯誤

typeerror

不同型別間的無效操作

valueerror

傳入無效的引數

zerodivisionerror

除數為零

異常處理

(1)try-except語句

語法:

try:

檢測範圍

except exception[as reason]:

出現異常後的處理**

try語句按照如下方式工作:

example1:

try:

a=10/0

print(a)

except zerodivisionerror :

print('除數不能為零')

結果: 除數不能為零

example2:

try:

a=10/0

print(a)

except zerodivisionerror as error:

print('運算錯誤\n原因是:',str(error))

結果:運算錯誤

原因是: division by zero

(2)try-except-finally語句

語法:

try:

檢測範圍

except exception[as reason]:

出現異常後的處理**

finally:

無論如何都會被執行的語句

不管try子句裡面有沒有發生異常,finally子句都會被執行。

如果乙個異常在try子句裡被丟擲,而又沒有任何的except把它截住,那麼這個異常會在finally子句執行後被丟擲。如:

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')

(3)raise語句

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的異常,該異常是在迴圈物件窮盡所有元素時的報錯。我們以它為...