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


Posted in Python onMay 18, 2020

因为有把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捕获异常堆栈信息的几种方法

到此这篇关于python异常处理之try finally不报错的原因的文章就介绍到这了,更多相关python try finally不报错内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Python 相关文章推荐
Python3读取zip文件信息的方法
May 22 Python
Python实现程序的单一实例用法分析
Jun 03 Python
简述Python中的进程、线程、协程
Mar 18 Python
python生成不重复随机数和对list乱序的解决方法
Apr 09 Python
使用numpy和PIL进行简单的图像处理方法
Jul 02 Python
Python+Pandas 获取数据库并加入DataFrame的实例
Jul 25 Python
详解Python爬取并下载《电影天堂》3千多部电影
Apr 26 Python
Django Python 获取请求头信息Content-Range的方法
Aug 06 Python
python中enumerate() 与zip()函数的使用比较实例分析
Sep 03 Python
python给图像加上mask,并提取mask区域实例
Jan 19 Python
windows10在visual studio2019下配置使用openCV4.3.0
Jul 14 Python
python如何对链表操作
Oct 10 Python
Pandas实现一列数据分隔为两列
May 18 #Python
Python捕获异常堆栈信息的几种方法(小结)
May 18 #Python
Windows 下更改 jupyterlab 默认启动位置的教程详解
May 18 #Python
DjangoWeb使用Datatable进行后端分页的实现
May 18 #Python
django-orm F对象的使用 按照两个字段的和,乘积排序实例
May 18 #Python
PyTorch中torch.tensor与torch.Tensor的区别详解
May 18 #Python
django queryset相加和筛选教程
May 18 #Python
You might like
从零开始 教你如何搭建Discuz!4.1论坛
2006/07/07 PHP
PHP实现文件安全下载
2006/10/09 PHP
火车头采集器3.0采集图文教程
2007/03/17 PHP
php之XML转数组函数的详解
2013/06/07 PHP
php实现的CSS更新类实例
2014/09/22 PHP
PHP多进程编程实例
2014/10/15 PHP
php动态函数调用方法
2015/05/21 PHP
浅析PHP数据导出知识点
2018/02/17 PHP
PHP登录验证功能示例【用户名、密码、验证码、数据库、已登陆验证、自动登录和注销登录等】
2019/02/25 PHP
PHP连接SQL Server的方法分析【基于thinkPHP5.1框架】
2019/05/06 PHP
Js 获取HTML DOM节点元素的方法小结
2009/04/24 Javascript
ko knockoutjs动态属性绑定技巧应用
2012/11/14 Javascript
DWZ table的原生分页浅谈
2013/03/01 Javascript
嵌入式iframe子页面与父页面js通信的方法
2015/01/20 Javascript
纯JS实现旋转图片3D展示效果
2015/04/12 Javascript
基于JavaScript实现轮播图代码
2016/07/14 Javascript
node.js 发布订阅模式的实例
2017/09/10 Javascript
js实现弹出框的拖拽效果实例代码详解
2019/04/16 Javascript
vue ssr服务端渲染(小白解惑)
2019/11/10 Javascript
详解vue 组件注册
2020/11/20 Vue.js
vue 使用饿了么UI仿写teambition的筛选功能
2021/03/01 Vue.js
python中将\\uxxxx转换为Unicode字符串的方法
2018/09/06 Python
python pygame实现球球大作战
2019/11/25 Python
python实现移动木板小游戏
2020/10/09 Python
OpenCV+Python3.5 简易手势识别的实现
2020/12/21 Python
英国排名第一的LED灯泡网站:LED Bulbs
2019/09/03 全球购物
大学教师年终总结的自我评价
2013/10/29 职场文书
总裁秘书岗位职责
2013/12/04 职场文书
电子商务自荐书范文
2014/01/04 职场文书
缴纳养老保险的证明
2014/01/10 职场文书
《诺贝尔》教学反思
2014/02/17 职场文书
委托公证书范本
2014/04/03 职场文书
群众路线教育党员自我剖析材料
2014/10/06 职场文书
特岗教师个人总结
2015/02/10 职场文书
4S店销售内勤岗位职责
2015/04/13 职场文书
团组织推荐意见
2015/06/05 职场文书