try關鍵字,定義獲取程序錯誤1python
except關鍵字,出現異常錯誤執行裏面的代碼2測試
Exception定義錯誤類,Exception能獲取到全部類型的錯誤錯誤,as建立錯誤對象名稱,自動獲取錯誤信息3spa
#!/usr/bin/env python # -*- coding:utf8 -*- """獲取程序錯誤信息""" try: #try關鍵字定義獲取程序錯誤 #代碼塊 a = str(字符串) print(a) except Exception as e: #except關鍵字出現異常錯誤執行裏面的代碼,Exception定義錯誤類,as建立錯誤對象自動獲取錯誤信息 print(e) #打印錯誤對象輸出錯誤信息 # 輸出 # name '字符串' is not defined
python中的異常種類很是多,每一個異常專門用於處理獲取某一項異常4code
常見錯誤類型5對象
AttributeError 試圖訪問一個對象沒有的樹形,好比foo.x,可是foo沒有屬性x IOError 輸入/輸出異常;基本上是沒法打開文件 ImportError 沒法引入模塊或包;基本上是路徑問題或名稱錯誤 IndentationError 語法錯誤(的子類) ;代碼沒有正確對齊 IndexError 下標索引超出序列邊界,好比當x只有三個元素,卻試圖訪問x[5] KeyError 試圖訪問字典裏不存在的鍵 KeyboardInterrupt Ctrl+C被按下 NameError 使用一個還未被賦予對象的變量 SyntaxError Python代碼非法,代碼不能編譯(我的認爲這是語法錯誤,寫錯了) TypeError 傳入對象類型與要求的不符合 UnboundLocalError 試圖訪問一個還未被設置的局部變量,基本上是因爲另有一個同名的全局變量, 致使你覺得正在訪問它 ValueError 傳入一個調用者不指望的值,即便值的類型是正確的
更多錯誤類型6
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
咱們在之後記錄錯誤時,要想記錄對應的錯誤信息能夠用如下辦法7
先用對應的錯誤類型來獲取,若是都不是前面對應的錯誤類型,最後用Exception來獲取
#!/usr/bin/env python # -*- coding:utf8 -*- """獲取程序錯誤信息""" try: a = str(字符串) print(a) except AttributeError as c: #出現對應錯誤就獲取到信息,打印出來,若是不是對應錯誤則不執行 print(c) except IOError as d: #出現對應錯誤就獲取到信息,打印出來,若是不是對應錯誤則不執行 print(d) except ImportError as e: #出現對應錯誤就獲取到信息,打印出來,若是不是對應錯誤則不執行 print(e) except Exception as f: #都不是上面對應的錯誤,用Exception來無論是上面錯誤都獲取到 print(f) # 輸出 # name '字符串' is not defined
完整異常處理代碼塊8blog
else主代碼塊執行完,執行該塊9
finally不管異常與否,最終執行該塊10索引
#!/usr/bin/env python # -*- coding:utf8 -*- try: #主代碼塊 a = str(hjhb) except Exception as e: #代碼錯誤執行模塊 print(e) else: print("主代碼塊執行完,執行該塊") finally: print("不管異常與否,最終執行該塊")
主動觸發異常,也就是沒有錯誤,主動觸發一個錯誤11字符串
raise關鍵字,主動觸發一個錯誤12it
#!/usr/bin/env python # -*- coding:utf8 -*- try: #主代碼塊 a = str("1234") raise Exception('錯誤了。。。') except Exception as e: #代碼錯誤執行模塊 print(e) # 輸出 # 錯誤了。。。
斷言13io
assert 條件,條件成立就成立繼續執行,條件不成立就報錯,通常用於測試14
#!/usr/bin/env python # -*- coding:utf8 -*- assert 1 == 1 print("123") assert 1 == 2 print("456")