Prcc321
2021-11-04 14:40
采纳率: 88.9%
浏览 21

请问Python捕获到Exception时怎么获取具体异常类型

请问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


  • 写回答
  • 好问题 提建议
  • 追加酬金
  • 关注问题
  • 邀请回答

2条回答 默认 最新

相关推荐 更多相似问题