try: 語句... except 異常的名稱: 語句...
如果未發生異常則運行try之下的語句,如果發生了異常,則運行except下面的語句.,epcept之後的異常類型只在發生對應異常時生效.
a=10 b=0 try: c = b/ a print(c) except IOError ,ZeroDivisionError: pass else: print ("no error") print("done")
try ....except...else 語句,當沒有異常發生時,else中的語句將會被執行。
inputValue=input("please input a int data :") if type(inputValue)!=type(1): raise ValueError else: print(inputValue)
raise 引發一個異常
如果輸入的數據不是整數,則引發一個ValueError
a=10 b=0 try: print(a/b) finally: print ("always excute")
try ...finally
無論異常是否發生,在程序結束前,finally中的語句都會被執行。
a=10 b=0 try: print(a/b) except: print("error") finally: print("always excute")
finally語句也可以和except語句一起使用。
自定義一個MyException類,繼承Exception。 class MyException(Exception): def __init__(self,message): Exception.__init__(self) self.message=message 如果輸入的數字小於10,就引發一個MyException異常: a=input("please input a num:") if a<10: try: raise MyException("my excepition is raised ") except MyException,e: print (e.message)
異常也可以自定義
# 斷言 - 語法 # assert 1==2 # 只能接受一個布爾值 False # assert 1==1 # 只能接受一個布爾值 False # print(123456) # if 1 == int(input()): # pass # else: # raise AssertionError
常見的異常總結
異常名稱 描述 BaseException 所有異常的基類 SystemExit 解釋器請求退出 KeyboardInterrupt 用戶中斷執行(通常是輸入^C) Exception 常規錯誤的基類 StopIteration 迭代器沒有更多的值 GeneratorExit 生成器(generator)發生異常來通知退出 SystemExit Python 解釋器請求退出 StandardError 所有的內建標準異常的基類 ArithmeticError 所有數值計算錯誤的基類 FloatingPointError 浮點計算錯誤 OverflowError 數值運算超出最大限制 ZeroDivisionError 除(或取模)零 (所有數據類型) AssertionError 斷言語句失敗 AttributeError 對象沒有這個屬性 EOFError 沒有內建輸入,到達EOF 標記 EnvironmentError 操作系統錯誤的基類 IOError 輸入/輸出操作失敗 OSError 操作系統錯誤 WindowsError 系統調用失敗 ImportError 導入模塊/對象失敗 KeyboardInterrupt 用戶中斷執行(通常是輸入^C) LookupError 無效數據查詢的基類 IndexError 序列中沒有沒有此索引(index) KeyError 映射中沒有這個鍵 MemoryError 內存溢出錯誤(對於Python 解釋器不是致命的) NameError 未聲明/初始化對象 (沒有屬性) UnboundLocalError 訪問未初始化的本地變量 ReferenceError 弱引用(Weak reference)試圖訪問已經垃圾回收了的對象 RuntimeError 一般的運行時錯誤 NotImplementedError 尚未實現的方法 SyntaxError Python 語法錯誤 IndentationError 縮進錯誤 TabError Tab 和空格混用 SystemError 一般的解釋器系統錯誤 TypeError 對類型無效的操作 ValueError 傳入無效的參數 UnicodeError Unicode 相關的錯誤 UnicodeDecodeError Unicode 解碼時的錯誤 UnicodeEncodeError Unicode 編碼時錯誤 UnicodeTranslateError Unicode 轉換時錯誤 Warning 警告的基類 DeprecationWarning 關於被棄用的特徵的警告 FutureWarning 關於構造將來語義會有改變的警告 OverflowWarning 舊的關於自動提升爲長整型(long)的警告 PendingDeprecationWarning 關於特性將會被廢棄的警告 RuntimeWarning 可疑的運行時行爲(runtime behavior)的警告 SyntaxWarning 可疑的語法的警告 UserWarning 用戶代碼生成的警告