python异常处理之try finally不报错的原因

作者:myself_oriented 时间:2023-05-01 00:02:40 

因为有把python程序打包成exe的需求,所以,有了如下的代码


import time

class LoopOver(Exception):
 def __init__(self, *args, **kwargs):
   pass

class Spider:
 def __init__(self):
   super().__init__()

def run(self):
   raise LoopOver

@property
 def time(self):
   return '总共用时:{}秒'.format(self.runtime)

if __name__ == '__main__':
 try:
   spider = Spider()
   spider.run()
   print(spider.time) # 运行总时间
 finally:
   print('死掉了')
   time.sleep(60 * 60)

但是遇到了一个问题

程序显示“死掉后”并不会显示堆栈的错误信息

python异常处理之try finally不报错的原因

排查后发现,程序打印“堆栈的错误信息”并不是异步的,“堆栈的错误信息”会等到finally内的代码块执行完毕后才会输出

所以,把代码块改一下,
需要导入traceback库来跟踪堆栈的错误信息
如下所示


import time
import traceback

class LoopOver(Exception):
 def __init__(self, *args, **kwargs):
   pass

class Spider:
 def __init__(self):
   super().__init__()

def run(self):
   raise LoopOver

@property
 def time(self):
   return '总共用时:{}秒'.format(self.runtime)

if __name__ == '__main__':
 try:
   spider = Spider()
   spider.run()
   print(spider.time) # 运行总时间
 finally:
   traceback.print_exc()
   print('死掉了')
   time.sleep(60 * 60)

这种打印方式是异步的,不知道是多线程还是协程还是啥

python异常处理之try finally不报错的原因

更多追踪堆栈错误信息的,可以看这篇文章
Python捕获异常堆栈信息的几种方法

来源:https://segmentfault.com/a/1190000022673705

标签:python,try,finally
0
投稿

猜你喜欢

  • Python3 安装PyQt5及exe打包图文教程

    2021-09-24 12:43:56
  • 配置MySQL与卸载MySQL实例操作

    2024-01-19 21:55:26
  • Mac版Python3安装/升级的方式

    2021-03-07 13:24:40
  • 如何通过配置自动实现ValueList中hql语句的整型参数转换

    2024-01-24 14:59:21
  • 微信小程序 image组件binderror使用例子与js中的onerror区别

    2024-04-19 09:42:56
  • layui实现下拉复选功能的例子(包括数据的回显与上传)

    2024-02-24 17:37:10
  • python基于celery实现异步任务周期任务定时任务

    2021-06-14 05:20:26
  • python没有gpu,如何改用cpu跑代码

    2022-09-26 00:24:49
  • ASP checkbox复选框是否被选中的代码(结合数据库)

    2011-03-06 11:21:00
  • Javascript连接Access数据库完整实例

    2024-01-15 22:16:58
  • python文件拆分与重组实例

    2021-10-10 18:10:25
  • 通过优化CSS代码 减小对系统资源的占用

    2010-08-03 12:33:00
  • python实现学生管理系统开发

    2021-08-26 20:43:17
  • python通过微信发送邮件实现电脑关机

    2022-03-20 17:58:37
  • pyinstaller打包多个py文件和去除cmd黑框的方法

    2022-12-18 13:52:30
  • 从品牌网站看交互设计

    2009-08-18 12:39:00
  • Python中的Selenium异常处理

    2021-08-28 04:15:23
  • python批量识别图片指定区域文字内容

    2021-04-26 13:59:54
  • 一个挺酷的星级投票效果

    2010-08-03 12:44:00
  • python tkinter组件摆放方式详解

    2021-09-23 01:50:23
  • asp之家 网络编程 m.aspxhome.com