1.nameerror
嘗試訪問乙個未宣告的變數,會引發nameerror。
例如:print(foo)
錯誤資訊如下:
traceback (most recent call last): file 「d:/pythoncode/chapter09/異常.py」, line 1, in print(foo)nameerror: name 『foo』 is not defined
上述資訊表明,直譯器在任何命名空間裡面都沒有找到foo。
2.zerodivisionerror
當除數為零的時候,會引發zerodivisionerror異常。
例如:1/0錯誤資訊如下:
traceback (most recent call last): file 「d:/pythoncode/chapter09/異常.py」, line 1, in 1/0zerodivisionerror: division by zero
事實上,任何數值被零除都會導致上述異常。
3.syntaxerror
當直譯器發現語法錯誤時,會引發syntaxerror異常。
例如:list = [「a」,「b」,「c」]
for i in list
print(i)在上述示例中,由於for迴圈的後面缺少冒號,所以導致程式出現如下錯誤資訊:
file 「d:/pythoncode/chapter09/異常.py」, line 2 for i in list ^syntaxerror: invalid syntaxsyntaxerror
異常是唯一不在執行時發生的異常,它代表著python**中有乙個不正確的結構,使得程式無法執行。這些錯誤一般是在編譯時發生,直譯器無法把指令碼轉換為位元組**。
4.indexerror
當使用序列中不存在的索引時,會引發indexerror異常。
例如:list = list[0]
上述示例中,list列表中沒有任何元素,使用索引0訪問列表首位元素時,出現如下錯誤資訊:
traceback (most recent call last): file 「d:/pythoncode/chapter09/異常.py」, line 2, in list[0]indexerror: list index out of range
上述資訊表明,列表的索引值超出了列表的範圍。
5.keyerror
當使用對映中不存在的鍵時,會引發keyerror異常。
例如:mydict = mydict[『server』]
上述示例中,mydict字典中只有host和port兩個鍵,獲取server鍵對應的值時,出現如下錯誤資訊:
traceback (most recent call last): file 「d:/pythoncode/chapter09/異常.py」, line 2, in mydict[『server』]keyerror: 『server』
上述資訊表明,出現了字典中沒有的鍵server。
6.filenotfounderror
試圖開啟不存在的檔案時,會引發filenotfounderror(python 3.2以前是ioerror)異常。
例如:f = open(「test」)
上述示例中,使用open方法開啟名為test的檔案或目錄,出現如下錯誤資訊:
traceback (most recent call last): file 「d:/pythoncode/chapter09/異常.py」, line 1, in f = open(「test」)filenotfounderror: [errno 2] no such file or directory: 『test』
上述資訊表明,沒有找到名稱為test的檔案或者目錄。
7.attributeerror
當嘗試訪問未知的物件屬性時,會引發attributeerror異常。
例如:class car(object):
passcar = car()car.color = 「黑色」
print(car.color)
print(car.name)
上述示例中,car類沒有定義任何屬性和方法,在建立car類的例項以後,動態地給car引用的例項新增了color屬性,然後訪問它的color和name屬性時,出現如下錯誤資訊:
traceback (most recent call last): file 「d:/pythoncode/chapter09/異常.py」, line 6, in print(car.name)attributeerror: 『car』 object has no attribute 『name』
上述資訊表明,在car的例項中定義了color屬性,所以可以使用car.color的方式訪問;但是沒有定義name屬性,所以訪問name屬性時就會出錯。
python中的異常(讀書筆記)
try 語句塊 可能產生異常的語句塊 except 異常名1 要處理的異常 語句塊 異常處理語句 except 異常名2 要處理的異常 語句塊 異常處理語句.else 語句塊 未觸發異常,則執行該語句塊 finally 語句塊 始終執行該語句塊,一般為了達到釋放資源的目的異常名 描述attribut...
讀書筆記 JAVA異常學習
1 異常均為派生於 throwable 類的乙個例項 在下一層分解為 error 和exception,exception 又分為ioexception 和runtimeexception.2 派生與runtimeexception 的通常包括 如果出現 runtimeexception異常,那麼就...
Effective Java 讀書筆記(八) 異常
充分發揮異常的優點,可以提高程式的可讀性 可靠性和可維護性。如果使用不當,它們也會帶來負面影響。異常應該只用於異常的情況下,它們不應該用於正常的控制流。同理,設計良好的 api 不應該強迫客戶端為了正常的控制流而使用異常。如果乙個類有狀態相關的方法,即只有在特定的不可預知的情況下才能呼叫的方法,這個...