请问Python捕获到Exception时怎么获取具体异常类型?
我现在有一个装饰器,来捕获异常写入日志,然后根据异常类型决定是否需要写入详细信息的日志,但我使用repr()获取的是字符串,只能截取内容来判断
请问可以直接获取到异常类型吗
def error_log():
"""
异常捕获日记记录装饰器
"""
def decorator(func):
@functools.wraps(func)
def wrapper(*args, **kwargs):
# 运行程序
try:
return func(*args, **kwargs)
# 捕获异常
except Exception as e:
"""查询异常类型是否需要记录详细信息"""
# 记录详细信息默认True
is_exc_info = True
# 需要记录详细信息的异常类型
is_exc_info_dict = {
'TestDataError',
'DataBaseConnectError'
}
if repr(e).split('(')[0] in is_exc_info_dict:
is_exc_info = True
"""记录日志"""
# 记录异常日志
ErrorLog().create_logger.exception(
msg=f'{func.__name__}:{e}', # 日志内容 -> 方法名称:异常信息
exc_info=is_exc_info, # 详细信息
extra={'status': 'Exception'} # 额外参数属性
)
"""抛出异常"""
raise e
return wrapper
return decorator