python異常處理 >>>
什麼是異常處理?
程式在執行過程**現了不可預知的錯誤
並且該錯誤沒有對應的處理機制,那麼就會以異常的形式表現出來
造成的影響就是整個程式無法正常執行
異常的結構
1.異常的型別:nameerror
2.異常的資訊:name 'abc' is not defined
3.異常的位置:traceback (most recent call last): file "路徑", line 1, in abc
異常的種類:
1.語法錯誤
是你程式立刻就能解決的,這種錯誤是不能被容忍的,語法上的錯誤,發現之後應該立刻解決
2.邏輯錯誤
這種錯誤是可以被容忍的,因為一眼看不出來,針對邏輯上的錯誤,可以採用異常處理機制進行捕獲
常見的錯誤型別
nameerror 名字錯誤
syntaxerror 語法錯誤
keyerror 健不存在
valueerror 值錯誤
indexerror 索引錯誤
typeerror 型別錯誤
異常處理
在你認為可能出現bug的**塊上方try一下
try:
可能出錯的**except 出錯的型別 as e: #將報錯資訊賦值給變數e
出錯之後的處理機制
注意try內部的**塊越少越好
try後可跟多種except異常型別的捕獲,但是不會連續連續捕獲,因為有乙個錯誤發生之後,會立刻停止**的執行,執行該型別錯誤的except語句
try:
name
l= [1,2,3]
l[111]
d= d['password']exceptnameerror:print('nameerror')exceptindexerror:print('indexerror')exceptkeyerror:print('keyerror')
exception 所有異常的基類,所有異常型別都**獲
try:#name
l = [1,2,3]
l[111]#d =
#d['password']
except exception: #萬能異常 所有的異常型別都**獲
print('老子天下無敵')else:print('被檢測的**沒有任何的異常發生 才會走else')finally:print('無論被檢測的**有沒有異常發生 都會在**執行完畢之後執行我')
except後可跟else 被檢測**沒有任何異常才會走else
except後可跟finally 被檢測**無論有沒有異常都會走finally
raise 主動丟擲異常
if 'egon' == 'dsb':pass
else:raise typeerror('盡說大實話')
assert 斷言、語言,猜某個資料的狀態,猜對了不影響**執行,猜錯了直接報錯
l = [1,2,3]assert len(l) < 0 #斷言 預言
自定義異常
classmyerror(baseexception):def __init__(self,msg):
super().__init__()
self.msg=msgdef __str__(self):return '' %self.msgraise myerror('我自己定義的異常') #主動丟擲異常其實就是將異常類的物件列印出來,會走__str__方法
end
異常有哪些分類
所有異常都是 throwable 的子類,分為 error 和 exception。受檢異常 無能為力型,如欄位超長導致的 sqlexception。力所能及型,如未授權異常 unauthorizedexception,程式可跳轉許可權申請頁面。常見受檢異常還有 filenotfoundexcept...
常發生的異常有哪些, 如何使用異常?
常用預定義例外 cursor already open ora 06511 sqlcode 6511 游標已經開啟 dup val on index ora 00001 sqlcode 1 違反唯一性約束 invalid cursor ora 01001 sqlcode 1001 非法游標操作 in...
python金融分析 用於金融分析的Python包
recommended by activestate.1.numpy 實現各種陣列物件函式和傅利葉變換等等科學計算模組。3.matplotlib 乙個跨平台的數值繪圖包,可繪製高質量的2d,3d影象。4.mysql for python python操作mysql資料庫的介面軟體包。5.pyqt 乙...