python提供了兩個很是重要的功能來處理python程序在運行中出現的異常和錯誤。你可使用該功能來調試python程序。python
try: 可能發生異常的代碼 except 異常錯誤的類型 as e: #e表示用來接受異常錯誤緣由 pass #能夠在此處打印提示人們錯誤緣由
AttributeError 試圖訪問一個對象沒有的屬性 IOError 輸入/輸出異常;基本上是沒法打開文件 ImportError 沒法引入模塊或包;基本上是路徑問題或名稱錯誤 IndentationError 語法錯誤的子類,縮進錯誤 IndexError 下標索引超出序列邊界,好比當x只有三個元素,卻試圖訪問x[5] KeyError 試圖訪問字典裏不存在的鍵 KeyboardInterrupt Ctrl+C被按下 NameError 使用一個還未被賦予對象的變量 SyntaxError Python語法錯誤 TypeError 傳入對象類型與要求的不符合 UnboundLocalError 試圖訪問一個還未被設置的局部變量,基本上是因爲另有一個同名的全局變量,致使你覺得正在訪問它 ValueError 傳入一個調用者不指望的值,即便值的類型是正確的
ArithmeticError
AssertionError
AttributeError
BaseException
BufferError
BytesWarning
DeprecationWarning
EnvironmentError
EOFError
Exception
FloatingPointError
FutureWarning
GeneratorExit
ImportError
ImportWarning
IndentationError
IndexError
IOError
KeyboardInterrupt
KeyError
LookupError
MemoryError
NameError
NotImplementedError
OSError
OverflowError
PendingDeprecationWarning
ReferenceError
RuntimeError
RuntimeWarning
StandardError
StopIteration
SyntaxError
SyntaxWarning
SystemError
SystemExit
TabError
TypeError
UnboundLocalError
UnicodeDecodeError
UnicodeEncodeError
UnicodeError
UnicodeTranslateError
UnicodeWarning
UserWarning
ValueError
Warning
ZeroDivisionError
通常狀況下,若是咱們對即將運行的代碼有可能出現異常的擔心,可使用異常處理來運行咱們代碼,可是在捕獲異常時最好可以具體寫清楚異常的類型。若是可能出現多種異常,可使用if判斷,也能夠把異常類型放在一塊兒寫成元祖的形式(可是這樣的話無法具體指導是哪種異常報錯),也能夠將Exception這個萬能異常放在判斷的最後,以防出現了咱們沒有捕獲到的異常。ide
s1 = 'hello' try: int(s1) except IndexError as e: print('出現瞭如下錯誤', e) except KeyError as e: print('出現瞭如下錯誤', e) except ValueError as e: print('出現瞭如下錯誤', e) except Exception as e: print('出現瞭如下錯誤', e)
s1 = 'hello' try: int(s1) except (IndexError,ValueError,KeyError) as e: print('出現瞭如下錯誤', e) except Exception as e: print('出現瞭如下錯誤', e)
try: # 主代碼塊 pass except KeyError as e: # 異常時,執行該塊 pass else: # 主代碼正常執行完,執行該塊,如出現異常,不執行該塊 pass finally: # 不管異常與否,最終執行該塊 pass
try: raise Exception('錯誤了。。。') except Exception as e: print(e)
class WusirException(Exception): def __init__(self, msg): self.message = msg try: raise WusirException('這是我自定義的異常') except WusirException as e: print(e)