python學習之異常

2022-08-26 06:45:11 字數 1541 閱讀 2588

attributeerror 試圖訪問乙個物件沒有的樹形,比如foo.x,但是foo沒有屬性x

ioerror 輸入/輸出異常;基本上是無法開啟檔案

importerror 無法引入模組或包;基本上是路徑問題或名稱錯誤

indentationerror 語法錯誤(的子類) ;**沒有正確對齊

indexerror 下標索引超出序列邊界,比如當x只有三個元素,卻試圖訪問x[5]

keyerror 試圖訪問字典裡不存在的鍵

keyboardinterrupt ctrl+c被按下

nameerror 使用乙個還未被賦予物件的變數

syntaxerror python**非法,**不能編譯(個人認為這是語法錯誤,寫錯了)

typeerror 傳入物件型別與要求的不符合

unboundlocalerror 試圖訪問乙個還未被設定的區域性變數,基本上是由於另有乙個同名的全域性變數,

導致你以為正在訪問它

valueerror 傳入乙個呼叫者不期望的值,即使值的型別是正確的

為了保證程式的健壯性與容錯性,即在遇到錯誤時程式不會崩潰,我們需要對異常進行處理,

如果錯誤發生的條件是可預知的,我們需要用if進行處理:在錯誤發生之前進行預防

如果錯誤發生的條件是不可預知的,則需要用到try...except:在錯誤發生之後進行處理

例:

def safe_float(obj):

try:

retval=float(obj)

except (valueerror,typeerror) as e:

retval=str(e)

return retval

def main():

log=open('cardlog.txt','w')

try:

ccfile=open('carddata','r')

except ioerror as e:

log.write('no txns this month\n')

log.close()

return

txns=ccfile.readlines()

ccfile.close()

total=0.0

log.write('account log:\n')

for eachtxn in txns:

result=safe_float(eachtxn)

if isinstance(result,float):

total+=result

log.write('data...processed\n')

else:

log.write('ignored: %s'%result)

print('$%.2f(new blance)'%(total))

log.close()

if __name__=='__main__':

main()

python學習之異常

多個execpt捕獲異常 try x input enter the first number y input enter the second number print int x int y except zerodivisionerror print the second number can...

Python學習之異常處理

具體 詳見 異常即是乙個事件,該事件會在程式執行過程中發生,影響了程式的正常執行。一般情況下,在python無法正常處理程式時就會發生乙個異常。異常是python物件,表示乙個錯誤。當python指令碼發生異常時我們需要捕獲處理它,否則程式會終止執行。捕捉異常可以使用try except語句。try...

python學習之異常處理

語法錯誤 因語法沒有通過python直譯器於法檢測 邏輯錯誤 有時不能避免 異常就是python程式執行時因發生錯誤而終止。在python的異常報錯資訊中包含 錯誤資訊追蹤資訊 錯誤型別 錯誤值 常見異常attributeerror 試圖訪問乙個物件沒有的樹形,比如foo.x,但是foo沒有屬性x ...