首頁技術(shù)文章正文

python常見異常類型介紹【黑馬程序員】

更新時間:2021-03-03 來源:黑馬程序員 瀏覽量:

在Python中,所有的異常類都是Exception的子類。Exception類定義在exceptions模塊中,該模塊在Python的內(nèi)建命名空間中,我們不必導入就可以直接使用。

1577370495235_學IT就到黑馬程序員.gif

每次執(zhí)行程序遇到錯誤的時候,程序就會引發(fā)異常。如果這個異常對象沒有進行處理和捕捉,程序就會用所謂的回溯(traceback,-種錯誤信息)終止執(zhí)行,這些信息包括錯誤的名稱(如NameError)、原因和錯誤發(fā)生的行號。

下面來列舉幾個比較常見的異常。

1. NameError

嘗試訪問一個未聲明的變量,會引發(fā)NameErroro例如:

print(test)

錯誤信息如下:

Traceback (most recent call last):
  File "C:\Users\itcast\PycharmProjects\異常.py", line 8, in <module>
    print(test)
NameError: name 'test' is not defined

上述信息表明,解釋器在任何命名空間里面都沒有找到test。

 

2. ZeroDivisionError

當除數(shù)為零的時候,會引發(fā)ZeoDioenorr異常。例如:

1/0

錯誤信息如下:

Traceback (most recent call last):
   File "C:\Users\itcast\PycharmProjects\Chapter09\異常.py", line 8, in <module>
     print(1/0)
 ZeroDivisionError: division by zero

事實上,任何數(shù)值被零除都會導致上述異常。

3. SyntaxError

當解釋器發(fā)現(xiàn)語法錯誤時,會引發(fā)SyntaxError異常。例如:

demo_list = ["a","b","c"]
     for i in demo_list
         print(i)

在上述示例中,由于for循環(huán)的后面缺少冒號,所以導致程序出現(xiàn)如下錯誤信息:

File "C:\Users\itcast\PycharmProjects\Chapter09\異常.py ", line 9
     for i in demo_list
           ^
SyntaxError: invalid syntax

SyntaxError異常是唯一不在運行時發(fā)生的異常, 它代表著Python代碼中有一個不正確的結(jié)構(gòu),使得程序無法執(zhí)行。這些錯誤一般是在編譯時發(fā)生 ,解釋器無法把腳本轉(zhuǎn)換為字節(jié)代碼。

4. IndexError

當使用序列中不存在的索引時,會引發(fā)IndexErr異常。例如:

demo_list = []
 demo_list[0]
上述示例中,demo_list列表中沒有沒有任何元素,使用索引0訪問列表首位元素時,出現(xiàn)如下錯誤信息:
Traceback (most recent call last):
   File "C:\Users\itcast\PycharmProjects\Chapter09\異常.py ", line 9, in <module>
     demo_list[0]
 IndexError: list index out of range

上述信息表面,列表的索引值超出了列表的范圍。

 

5. KeyError

當使用字典中不存在的鍵訪問值時,會引發(fā)KeyError 異常。例如:

dictionary = {'host':'earth', 'port':80}
dictionary['server']

 

上述示例中,dictionary字典中只有host和port兩個鍵,獲取server鍵對應(yīng)的值時,出現(xiàn)如下錯誤信息:

Traceback (most recent call last):
  File "C:\Users\itcast\PycharmProjects\Chapter09\異常.py ", line 9, in <module>
    dictionary['server']
KeyError: 'server'

上述信息表明,出現(xiàn)了字典中沒有的鍵server。

 

6. FileNotFoundError

試圖打開不存在的文件時,會引發(fā)FileNotFoundError(Python 3.2以前是IOError)異常。

例如:

file = open("test")

上述示例中,使用open方法打開名為test的文件或目錄,出現(xiàn)如下錯誤信息:

Traceback (most recent call last):
  File "C:\Users\itcast\PycharmProjects\Chapter09\異常.py ", line 8, in <module>
    file = open("test")
FileNotFoundError: [Errno 2] No such file or directory: 'test'

上述信息表明,沒有找到名稱為test的文件或者目錄。

 

7. AttributeError

當嘗試訪問未知的對象屬性時,會引發(fā)AttributeError異常。例如:

class Car(object):
    pass
    
car = Car()
 car.color = '黑色'
 print(car.color)
 print(car.name)

上述示例中,Car 類沒有定義任何屬性和方法,在創(chuàng)建Car類的實例以后,動態(tài)地給car引用的實例添加了color屬性,然后訪問它的color和name屬性時,出現(xiàn)如下錯誤信息:

Traceback (most recent call last):
  File "C:\Users\itcast\PycharmProjects\Chapter09\異常.py ", line 15, in <module>
    print(car.name)
AttributeError: 'Car' object has no attribute 'name'

上述信息表明,在Car的實例中定義了color屬性,所以可以使用car.color的方式訪問;但是沒有定義name屬性,所以訪問name屬性時就會出錯。



猜你喜歡:

Python項目實戰(zhàn)視頻教程:美多商城開發(fā)

什么是Python模塊?Python模塊分為幾類?

斐波那契數(shù)列是什么?Python如何實現(xiàn)斐波那契數(shù)列?

Python常見語法問題和異常概述

黑馬程序員高級python培訓班

分享到:
在線咨詢 我要報名
和我們在線交談!