每个函数都进行异常处理非常耗时,可以尝试将异常处理抽象出来,形成装饰器:
import time
import sys
# 全局错误处理,输出报错信息:
def print_exception(func):
def wrapper(*args, **kwargs):
try:
res=func(*args, **kwargs)
except Exception as e:
print("运行错误: " + str(repr(e)))
sys.exit(1) #出现异常后,结束程序运行
return res
return wrapper #time_count函数的返回值为wrapper函数
@print_exception
def index():
time.sleep(1)
print('login')
# i = 0 / 0 #取消注释可观察到结果
return 123
res=index()
print('返回值res: ',res)
错误处理部分,可以具体显示出问题的行:
import time
import sys
import traceback
# 全局错误处理,输出报错信息:
def print_exception(func):
def wrapper(*args, **kwargs):
try:
res=func(*args, **kwargs)
except Exception as e:
traceback.print_exc()
traceback.print_exc(file=open('tb.txt','w+'))
print(traceback.format_exc())
sys.exit(1)
return res
return wrapper #time_count函数的返回值为wrapper函数
@print_exception
def index():
#import z
time.sleep(1)
print('login')
i = 0 / 0
return 123
res=index()
print('返回值res: ',res)
其中:
traceback.format_exc() 输出的是字符串。所以需要print。
traceback.print_exc() 直接输出,也可以追加到文件。