python 追踪except信息

       看下面这个函数

       

def test():
    sum = 3/0
    
if __name__ == '__main__':
    test()
       除0肯定是不对的,会引发一个except,内容如下:

       

File "E:\Src\dongsheng\TestPython\testtrace_back.py", line 23, in <module>
  test()
File "E:\Src\dongsheng\TestPython\testtrace_back.py", line 19, in test
  sum = 3/0

ZeroDivisionError: integer division or modulo by zero
       

       上面的提示,是在IDE中运行时出现的,实际在线上运行脚本时,一般会用nohup 方式启动,输出内容会写入到nohup.out文件中,但这个文件里的内容可能非常多,很杂乱,不利于异常的排查。

        python  提供了traceback  ,可以完美的输出except发生时的信息,就和上面的内容一样,而且可以输入到指定的文件之中,所以,不妨写一个装饰器,修饰那些需要监督的函数,当他们发生异常时,记录下有关异常的信息。

       

#coding=utf-8
from functools import wraps
import traceback

def except_trace(filename):
    def decorate(func):
        @wraps(func)
        def wrapper(*args,**kwargs):
            try:
                func(*args,**kwargs)
            except:
                fp = open(filename,'w')
                traceback.print_exc(file=fp)
                fp.close()
        return wrapper
    return decorate
@except_trace('1.txt')
def test():
    sum = 3/0
    

if __name__ == '__main__':
    test()

         这一次,发生异常后,有关异常的信息会输入到1.txt文件中,这个文件中只包含异常的信息,方便查看。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

酷python

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值