Python常見異常型別處理

2022-09-22 00:27:12 字數 2862 閱讀 4182

目錄

前言:開發人員在編寫程式時,難免會遇到錯誤,有的是編寫人員疏忽造成的語法錯誤,有的是程式內部隱含邏輯問題造成的資料錯誤,還有的是程式執行時與系統的規則衝突造成的系統錯誤,等等。

總的來說,編寫程式時遇到的錯誤可大致分為 2 類,分別為語法錯誤和執行時錯誤。

語法錯誤,也就是解析**時出現的錯誤。當**不符合python語法規則時,python直譯器在解析時就會報出syntaxerror語法錯誤,與此同時還會明確指出最早探測到錯誤的語句。

例如:print "hello,world!"

我們知道,pythwww.cppcns.comon 3已不再支援上面這種寫法,所以在執行時,直譯器會報如下錯誤:

syntaxerror: missing parentheses in call to 'print'

語法錯誤多是開發者疏忽導致的,屬於真正意義上的錯誤,是直譯器無法容忍的,因此,只有將程式中的所有語法錯誤全部糾正,程式才能執行。

執行時錯誤,即程式在語法上都是正確的,但在執行時發生了錯誤。

例如:a = 1/0

上面這句**的意思是「用 1 除以 0,並賦值給 a 。

因為 0 作除數是沒有意義的,所以執行後會產生如下錯誤:

>>> a = 1/0

traceback (most recent call last):

file "", line 1, in

a = 1/0

zerodivisionerror: division by zero

以上執行輸出結果中,前兩段指明了錯誤的位置,最後一句表示出錯的型別。在 python 中,把這種執行時產生錯誤的情況叫做異常(exceptions)。這種異常情況還有很多,常見的幾種異常情況如表 1 所示

表 1 python常見異常型別:

異常型別

含義例項

assertionerror

當 assert 關鍵字後的條件為假時,程式執行會停止並丟擲 assertionerror 異常

>>> demo_list = ['c語言中文網']

>>> assert len(demo_list) > 0

>>> demo_list.pop()

'c語言中文網'

>>> assert len(demo_list) > 0

traceback (most recent call last):

file "", line 1, in

assert len(demo_list) > 0

assertionerror

attributeerror

當試圖訪問的物件屬性不存在時丟擲的異常

>>> demo_list = [www.cppcns.com'c語言中文網']

>>> demo_list.len

traceback (most recent call last):

file "", line 1, in

demo_list.len

attributeerror: 'list' object has no attribute 'len'

indexerror

索引超出序列範圍會引發此異常

xumfcdulti >>> demo_list = ['c語言中文網']

>>> demo_list[3]

traceback (most recent call last):

file "", line 1, in

demo_list[3]

indexerror: list index out of range

keyerror

字典中查詢乙個不存在的關鍵字時引發此異常

>>> demo_dict=

>>> demo_dict["c語言"]

traceback (most recent call last):

file "", line 1, in

demo_dict["c語言"]

keyerror: 'c語言'

nameerror

嘗試訪問乙個未宣告的變數時,引發此異常

>>> c語言中文網

traceback (most recent call last):

file "", line 1, in

c語言中文網

nameerror: name 'c語言中文網' is not defined

typeerror

不同型別資料之間的無效操作

>>> 1+'c語言中文網'

traceback (most recent call last):

file "", line 1, in

1+'c語言中文網'

typeerror: unsupported operand type(s) for +: 'int' and 'str'

zerodivisionerror

除法運算中除數為 0 引發此異常

>>> a = 1/0

traceback (most recent call last):

file "", line 1, in

a = 1/0

zerodivisionerror: division by zero

提程式設計客棧示:表中的異常型別不需要記住,只需簡單了解即可。

當乙個程式發生異常時,代表該程式在執行時出現了非正常的情況,無法再執行下去。預設情況下,程式是要終止的。如果要避免程式退出,可以使用捕獲異常的方式獲取這個異常的名稱,再通過其他的邏輯**讓程式繼續執行,這種根據異常做出的邏輯處理叫作異常處理。

開發者可以使用異常處理全面地控制自己的程式。異常處理不僅僅能夠管理正常的流程執行,還能夠在程式出錯時對程式進行必的處理。大大提高了程式的健壯性和人機互動的友好性。

python常見異常型別

為了讓程式繼續執行,我們可以用try except 捕獲異常。捕獲異常後可以列印出異常原因,這樣以便於分析異常原因。1.nosuchelementexception 沒有找到元素 2.nosuchframeexception 沒有找到iframe 3.nosuchwindowexception 沒找...

Python的異常處理機制和常見異常型別

1.定義 執行時檢測到的錯誤。2.現象 當異常發生時,程式不會再向下執行,而轉到函式的呼叫語句。3.常見異常型別 名稱異常 nameerror 變數未定義。型別異常 typeerror 不同型別資料進行運算。索引異常 indexerror 超出索引範圍。屬性異常 attributeerror 物件沒...

Python異常處理和異常型別

try some functions.except exception,e print e try some functions.except exception as e print e 注意這裡exception,e變成了exception as e 1.nameerror 嘗試訪問乙個未申明的...