更新時(shí)間:2021-03-03 來源:黑馬程序員 瀏覽量:
在Python中,所有的異常類都是Exception的子類。Exception類定義在exceptions模塊中,該模塊在Python的內(nèi)建命名空間中,我們不必導(dǎo)入就可以直接使用。
每次執(zhí)行程序遇到錯(cuò)誤的時(shí)候,程序就會(huì)引發(fā)異常。如果這個(gè)異常對(duì)象沒有進(jìn)行處理和捕捉,程序就會(huì)用所謂的回溯(traceback,-種錯(cuò)誤信息)終止執(zhí)行,這些信息包括錯(cuò)誤的名稱(如NameError)、原因和錯(cuò)誤發(fā)生的行號(hào)。
下面來列舉幾個(gè)比較常見的異常。
1. NameError
嘗試訪問一個(gè)未聲明的變量,會(huì)引發(fā)NameErroro例如:
print(test)
錯(cuò)誤信息如下:
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
當(dāng)除數(shù)為零的時(shí)候,會(huì)引發(fā)ZeoDioenorr異常。例如:
1/0
錯(cuò)誤信息如下:
Traceback (most recent call last): File "C:\Users\itcast\PycharmProjects\Chapter09\異常.py", line 8, in <module> print(1/0) ZeroDivisionError: division by zero
事實(shí)上,任何數(shù)值被零除都會(huì)導(dǎo)致上述異常。
3. SyntaxError
當(dāng)解釋器發(fā)現(xiàn)語法錯(cuò)誤時(shí),會(huì)引發(fā)SyntaxError異常。例如:
demo_list = ["a","b","c"] for i in demo_list print(i)
在上述示例中,由于for循環(huán)的后面缺少冒號(hào),所以導(dǎo)致程序出現(xiàn)如下錯(cuò)誤信息:
File "C:\Users\itcast\PycharmProjects\Chapter09\異常.py ", line 9 for i in demo_list ^ SyntaxError: invalid syntax
SyntaxError異常是唯一不在運(yùn)行時(shí)發(fā)生的異常, 它代表著Python代碼中有一個(gè)不正確的結(jié)構(gòu),使得程序無法執(zhí)行。這些錯(cuò)誤一般是在編譯時(shí)發(fā)生 ,解釋器無法把腳本轉(zhuǎn)換為字節(jié)代碼。
4. IndexError
當(dāng)使用序列中不存在的索引時(shí),會(huì)引發(fā)IndexErr異常。例如:
demo_list = [] demo_list[0]上述示例中,demo_list列表中沒有沒有任何元素,使用索引0訪問列表首位元素時(shí),出現(xiàn)如下錯(cuò)誤信息:
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
當(dāng)使用字典中不存在的鍵訪問值時(shí),會(huì)引發(fā)KeyError 異常。例如:
dictionary = {'host':'earth', 'port':80} dictionary['server']
上述示例中,dictionary字典中只有host和port兩個(gè)鍵,獲取server鍵對(duì)應(yīng)的值時(shí),出現(xiàn)如下錯(cuò)誤信息:
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
試圖打開不存在的文件時(shí),會(huì)引發(fā)FileNotFoundError(Python 3.2以前是IOError)異常。
例如:
file = open("test")
上述示例中,使用open方法打開名為test的文件或目錄,出現(xiàn)如下錯(cuò)誤信息:
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
當(dāng)嘗試訪問未知的對(duì)象屬性時(shí),會(huì)引發(fā)AttributeError異常。例如:
class Car(object): pass car = Car() car.color = '黑色' print(car.color) print(car.name)
上述示例中,Car 類沒有定義任何屬性和方法,在創(chuàng)建Car類的實(shí)例以后,動(dòng)態(tài)地給car引用的實(shí)例添加了color屬性,然后訪問它的color和name屬性時(shí),出現(xiàn)如下錯(cuò)誤信息:
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的實(shí)例中定義了color屬性,所以可以使用car.color的方式訪問;但是沒有定義name屬性,所以訪問name屬性時(shí)就會(huì)出錯(cuò)。
猜你喜歡:
Python項(xiàng)目實(shí)戰(zhàn)視頻教程:美多商城開發(fā)