当前位置: 首页 > 后端技术 > Python

【python】异常处理:tyr最终不报错的原因

时间:2023-03-26 18:00:33 Python

因为需要将python程序打包成exe,下面代码importtimeclassLoopOver(Exception):def__init__(self,*args,**kwargs):passclassSpider:def__init__(self):super()。__init__()defrun(self):raiseLoopOver@propertydeftime(self):return'Totaltimespent:{}seconds'.format(self.runtime)if__name__=='__main__':try:spider=Spider()spider.run()print(spider.time)#总运行时间finally:print('dead')time.sleep(60*60)但是遇到了问题,程序显示“死后”,检查后不会显示栈的错误信息,发现程序打印“栈的错误信息”并不是异步的,直到执行完finally中的代码块才会输出“栈的错误信息”。因此,更改代码块需要导入traceback库来跟踪堆栈的错误信息如下(self):super().__init__()defrun(self):raiseLoopOver@propertydeftime(self):return'Totaltimespent:{}秒'.format(self.runtime)if__name__=='__main__':尝试:spider=Spider()spider.run()print(spider.time)#总运行时间finally:traceback.print_exc()print('dead')time.sleep(60*60)这个打印方式是异步的,不知道是不是multi-threadedorcoroutinesormoretrackingstackerrorinformation,可以看这篇Python捕获异常堆栈信息的几种方法