介绍
这篇文章主要讲解了python中尝试最后不报错怎么办,内容清晰明了,对此有兴趣的小伙伴可以学习一下,相信大家阅读完之后会有帮助。
因为有把python程序打包成exe的需求,所以,有了如下的代码
进口时间 类LoopOver(异常): def __init__(自我,* args, * * kwargs): 通过 蜘蛛类: def __init__(自我): super () . __init__ () def运行(自我): 提高LoopOver @ property def时间(自我): 返回& # 39;总共用时:{}秒& # 39;.format (self.runtime) if __name__==& # 39; __main__ # 39;: 试一试: 蜘蛛=蜘蛛() spider.run () 打印(spider.time) #运行总时间 最后: 打印(& # 39;死掉了& # 39;) 时间。睡眠(60 * 60)
但是遇到了一个问题
程序显示“死掉后”并不会显示堆栈的错误信息
排查后发现,程序打印“堆栈的错误信息”并不是异步的,“堆栈的错误信息”会等到最后内的代码块执行完毕后才会输出
所以,把代码块改一下,
需要导入回溯库来跟踪堆栈的错误信息
如下所示
进口时间 进口回溯 类LoopOver(异常): def __init__(自我,* args, * * kwargs): 通过 蜘蛛类: def __init__(自我): super () . __init__ () def运行(自我): 提高LoopOver @ property def时间(自我): 返回& # 39;总共用时:{}秒& # 39;.format (self.runtime) if __name__==& # 39; __main__ # 39;: 试一试: 蜘蛛=蜘蛛() spider.run () 打印(spider.time) #运行总时间 最后: traceback.print_exc () 打印(& # 39;死掉了& # 39;) 时间。睡眠(60 * 60)
这种打印方式是异步的,不知道是多线程还是协程还是啥
看完上述内容,是不是对python中尝试最后不报错怎么办有进一步的了解,如果还想学习更多内容,欢迎关注行业资讯频道。