TypeError 異常是由組合錯誤型別的物件或使用錯誤型別的物件呼叫函式引起的。示例 import sys try : ny = 'Statue of Liberty' my_list = [3, 4, 5, 8, 9] print my_list + ny except TypeError as e: print e print sys.exc_type 輸出 can only concatenate list (not ""str") to list
IndentationError 異常在解析器發現不遵循縮排規則的原始碼時發生。我們在匯入模組時可以捕獲它,因為模組會在第一次匯入時編譯。你不能在包含 try/except 塊的同一模組中捕獲它,因為出現此異常時,Python 將無法完成模組的編譯,並且模組中的任何程式碼都不會執行。我們將給定程式碼改寫如下以處理異常示例 try: def f(): z=['foo', 'bar'] for i in z: if i == 'foo': except IndentationError as e: print e 輸出 "C:/Users/TutorialsPoint1/~.py", line 5 if i ... 閱讀更多
當你的程式碼引用當前作用域中不存在的名稱時,會引發 NameError 異常。例如,未限定的變數名。給定程式碼改寫如下,以捕獲異常並查詢其型別。示例 import sys try: def foo(): print magnolia foo() except NameError as e: print e print sys.exc_type 輸出 C:/Users/TutorialsPoint1/~.py global name 'magnolia' is not defined
當序列引用超出範圍時,會引發 IndexError 異常。給定程式碼改寫如下,以捕獲異常並查詢其型別示例 import sys try: my_list = [3,7, 9, 4, 6] print my_list[6] except IndexError as e: print e print sys.exc_type 輸出 C:/Users/TutorialsPoint1~.py list index out of range
當算術運算超過變數型別的限制時,會引發 OverflowError 異常。長整數會隨著值的增長而分配更多空間,因此最終會引發 MemoryError 異常。但是,浮點異常處理並非標準化。普通整數會根據需要轉換為長整數值。示例 給定程式碼改寫如下以捕獲異常:i=1 try: f = 3.0**i for i in range(100): print i, f f = f ** 2 except OverflowError as err: print 'Overflowed after ', f, err 輸出 我們得到如下 OverflowError 異常:C:/Users/TutorialsPoint1/~scratch_1.py Floating point values: 0 3.0 1 9.0 2 81.0 3 6561.0 4 43046721.0 ... 閱讀更多
ArithmeticError 異常是所有因數值計算而發生的錯誤的基類。它是那些內建異常的基類,例如:OverflowError、ZeroDivisionError、FloatingPointError 我們可以在給定程式碼中捕獲異常,如下所示示例 import sys try: 7/0 except ArithmeticError as e: print e print sys.exc_type print 'This is an example of catching ArithmeticError' 輸出 integer division or modulo by zero This is an example of catching ArithmeticError