Python--異常處理和斷言


try關鍵字,定義獲取程序錯誤

except關鍵字,出現異常錯誤執行里面的代碼

Exception定義錯誤類,Exception能獲取到所有類型的錯誤錯誤,as創建錯誤對象名稱,自動獲取錯誤信息

#!/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中的異常種類非常多,每個異常專門用於處理獲取某一項異常

常見錯誤類型

AttributeError 試圖訪問一個對象沒有的樹形,比如foo.x,但是foo沒有屬性x
IOError 輸入/輸出異常;基本上是無法打開文件
ImportError 無法引入模塊或包;基本上是路徑問題或名稱錯誤
IndentationError 語法錯誤(的子類) ;代碼沒有正確對齊
IndexError 下標索引超出序列邊界,比如當x只有三個元素,卻試圖訪問x[5]
KeyError 試圖訪問字典里不存在的鍵
KeyboardInterrupt Ctrl+C被按下
NameError 使用一個還未被賦予對象的變量
SyntaxError Python代碼非法,代碼不能編譯(個人認為這是語法錯誤,寫錯了)
TypeError 傳入對象類型與要求的不符合
UnboundLocalError 試圖訪問一個還未被設置的局部變量,基本上是由於另有一個同名的全局變量,
導致你以為正在訪問它
ValueError 傳入一個調用者不期望的值,即使值的類型是正確的
我們在以后記錄錯誤時,要想記錄對應的錯誤信息可以用以下辦法
先用對應的錯誤類型來獲取,如果都不是前面對應的錯誤類型,最后用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

else主代碼塊執行完,執行該塊
finally無論異常與否,最終執行該塊

#!/usr/bin/env python
# -*- coding:utf8 -*-
try:
    #主代碼塊
    a = str(hjhb)
except Exception as e:
    #代碼錯誤執行模塊
    print(e)
else:
    print("主代碼塊執行完,執行該塊")
finally:
    print("無論異常與否,最終執行該塊")

主動觸發異常,也就是沒有錯誤,主動觸發一個錯誤

raise關鍵字,主動觸發一個錯誤

#!/usr/bin/env python
# -*- coding:utf8 -*-
try:
    #主代碼塊
    a = str("1234")
    raise Exception('錯誤了。。。')
except Exception as e:
    #代碼錯誤執行模塊
    print(e)
# 輸出
# 錯誤了。。。

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM