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 ... 閱讀更多
當像 input() 或 raw_input() 這樣的內建函式在遇到輸入流的末尾之前沒有讀取任何資料時,會引發 EOFError 異常。像 read() 這樣的檔案方法在檔案末尾返回空字串。給定程式碼重寫如下以捕獲 EOFError 並找到其型別。示例#eofError.py try: while True: data = raw_input('prompt:') print 'READ:', data except EOFError as e: print e 然後,如果我們在終端執行指令碼 $ echo hello | python eofError.py輸出prompt:READ: hello prompt:EOF when reading a line
當你的程式碼引用當前作用域中不存在的名稱時,會引發 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 浮點值: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'輸出整數除法或模運算除以零 這是一個捕獲 ArithmeticError 的示例