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


这应该很容易吧,比如type函数,或者isinstance函数,都可以。示例代码:

>>> import random
>>> try:
    r = random.random()
    if r < 0.33:
        raise ValueError('值错误')
    elif r < 0.66:
        raise KeyError('键错误')
    else:
        raise AttributeError('属性错误')
except Exception as e:
    print(type(e))
    if isinstance(e, ValueError):
        print('值错误')
    elif isinstance(e, KeyError):
        print('键错误')
    elif isinstance(e, AttributeError):
        print('属性错误')
    else:
        print('其他错误')

        
<class 'ValueError'>
值错误

except Exception as e
Exception 就是异常类型啊
你直接用异常基类来接收异常,那不管什么异常都进入一个分支里了
一个try可以跟多个except
你可以在前面加其它类型先捕获一波,用Exception 兜底