1. 程式人生 > 其它 >八、異常_1.異常型別和語法

八、異常_1.異常型別和語法

異常

當檢測到錯誤時,直譯器無法繼續執行,並出現錯誤資訊,這就是異常
異常語句可以嘗試執行某句可能發生錯誤的程式碼,如果發生錯誤,則執行另一句沒有錯誤的程式碼
不能確定一段程式碼是否有錯誤時,把它放入異常語句中執行,以避免程式發生錯誤導致無法推進的情況

異常型別

錯誤資訊中會提示異常型別,如 NameError、SyntaxError、FileNotFoundError 等
如果嘗試執行的程式碼的異常型別和要捕獲的異常型別不一致,則無法捕獲異常
捕獲多個異常時,可以把要捕獲的異常型別放入tuple
Exception 是所有程式異常類的父類
一般try下只放一行嘗試執行的程式碼

異常的語法

try:
    可能發生異常的程式碼
except (*異常型別) as VARIABLE :
    發生異常時執行的程式碼
else:
    沒有發生異常時執行的程式碼
finally:
    無論是否發生異常都執行的程式碼

捕獲異常

try:
    print(Undef)
except (NameError,SyntaxError) as res :
    print(res)

try:
    open('Undef','r')
except Exception as res :
    print(res)

name 'Undef' is not defined
[Errno 2] No such file or directory: 'Undef'

異常的else

try:
    print('this is test')
except Exception as res:
    print(res)
else:
    print('No error')

this is test
No error

異常的finally

try:
    f = open('test.txt','r')
except Exception as res :
    f = open('test.txt','w')
    print('new')
else:
    print('exist')
finally:
    print('close')
    f.close()

new
close