python 处理异常的方法,try except 自己封装装饰器

python 处理异常的方法,try except 封装装饰器

import sys
import traceback
from functools import wraps
from datetime import datetime


# 异常输出
def except_output(func):
    @wraps(func)
    def execept_print(*args, **kwargs):
        try:
            return func(*args, **kwargs)
        except Exception as e:
            sign = '=' * 60 + '\n'
            tb=e.__traceback__
            tb=find_error_func(tb)
            print(f'{sign}>>>异常时间:\t{datetime.now()}\n>>>异常函数及行数:\t该{tb.tb_frame.f_code.co_name}函数的-->第{tb.tb_lineno}行\n>>>异常函数所在文件:\t{tb.tb_frame.f_code.co_filename}')
            print(f'{"=" * 24}异常详细原因{"=" * 24}\n{traceback.format_exc()}{sign}')
    return execept_print


def find_error_func(e):
    # 列举调用到的可能会报错的文件
    file_list=['definition.py','exception_handling.py','genDDS.py','idlparser.py','Process_Idl.py','Serializer_Parser.py','grammar.lark']
    e=e.tb_next
    
    if e.tb_next.tb_frame.f_code.co_filename.split('/')[-1] not in file_list:
        return e
    else:
        e=e.tb_next
        return find_error_func(e)
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值