首先上示例代碼:
s1 = 'hello'
try:
int(s1)
except IndexError as e:
print('IndexError', e)
except KeyError as e:
print('KeyError', e)
except ValueError as e:
print('ValueError', e)
except Exception as e:
print('Exception', e)
else:
print('try內(nèi)代碼塊沒有異常則執(zhí)行我')
finally:
print('無論異常與否,都會執(zhí)行該模塊,通常是進(jìn)行資源釋放工作')
這段代碼包含了叛甫,異常分支類型捕獲
,無異常捕獲
杨伙,有無異常都會捕獲
的執(zhí)行邏輯其监。
捕獲全局異常
對入口函數(shù)進(jìn)行try...except
異常寫入日志文件
示例代碼:
import os
s1 = 'hello'
try:
int(s1)
except:
f=open(os.path.abspath('./log.txt'),'a')
traceback.print_exc(file=f)
f.flush()
f.close()
異常作用域
try,except限匣,else抖苦,finally代碼塊里聲明的變量,外部都能訪問。
作用域的產(chǎn)生
1锌历,只有當(dāng)變量在Module(模塊)贮庞、Class(類)、def(函數(shù))中定義的時候究西,才會有作用域的概念窗慎。
2,在作用域中定義的變量卤材,一般只在作用域中有效遮斥。
3,在if-elif-else商膊、for-else伏伐、while、try-except/try-finally等關(guān)鍵字的語句塊中并不會產(chǎn)生作用域