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 相关文章推荐
Python中的anydbm模版和shelve模版使用指南
Jul 09 Python
python3.5使用tkinter制作记事本
Jun 20 Python
Python队列的定义与使用方法示例
Jun 24 Python
Pycharm无法显示动态图片的解决方法
Oct 28 Python
python实现dijkstra最短路由算法
Jan 17 Python
Python实现SQL注入检测插件实例代码
Feb 02 Python
OpenCV 模板匹配
Jul 10 Python
如何通过python实现人脸识别验证
Jan 17 Python
如何在django中运行scrapy框架
Apr 22 Python
Tensorflow全局设置可见GPU编号操作
Jun 30 Python
Python持续监听文件变化代码实例
Jul 22 Python
Python中生成随机数据安全性、多功能性、用途和速度方面进行比较
Apr 14 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
php计算两个日期时间差(返回年、月、日)
2014/06/19 PHP
PHP版本的选择5.2.17 5.3.27 5.3.28 5.4 5.5兼容性问题分析
2016/04/04 PHP
PHP实现微信退款功能
2018/10/02 PHP
漂亮的提示信息(带箭头)
2007/03/21 Javascript
document.open() 与 document.write()的区别
2007/08/13 Javascript
javascript replace方法与正则表达式
2008/02/19 Javascript
javascript 一些用法小结
2009/09/11 Javascript
js面向对象设计用{}好还是function(){}好(构造函数)
2011/10/23 Javascript
jquery 操作DOM的基本用法分享
2012/04/05 Javascript
jquery原理以及学习技巧介绍
2015/11/11 Javascript
手机浏览器 后退按钮强制刷新页面方法总结
2016/10/09 Javascript
详解js界面跳转与值传递
2016/11/22 Javascript
基于jQuery制作小图标上下滑动特效
2017/01/18 Javascript
基于MVC方式实现三级联动(JavaScript)
2017/01/23 Javascript
ES5学习教程之Array对象
2017/04/01 Javascript
基于js粘贴事件paste简单解析以及遇到的坑
2017/09/07 Javascript
基于AngularJs select绑定数字类型的问题
2018/10/08 Javascript
微信小程序使用map组件实现获取定位城市天气或者指定城市天气数据功能
2019/01/22 Javascript
小程序异步问题之多个网络请求依次执行并依次收集请求结果
2019/05/05 Javascript
解决Layui中layer报错的问题
2019/09/03 Javascript
js实现小星星游戏
2020/03/23 Javascript
vue实现PC端分辨率适配操作
2020/08/03 Javascript
Nuxt的路由动画效果案例
2020/11/06 Javascript
[01:10]DOTA2次级职业联赛 - Fly战队宣传片
2014/12/01 DOTA
探究Python中isalnum()方法的使用
2015/05/18 Python
Python的IDEL增加清屏功能实例
2017/06/19 Python
python 从csv读数据到mysql的实例
2018/06/21 Python
python实现机器学习之元线性回归
2018/09/06 Python
Python获取统计自己的qq群成员信息的方法
2019/11/15 Python
详解Python3中的 input() 函数
2020/03/18 Python
纯css3实现走马灯效果
2014/12/26 HTML / CSS
个人近期表现材料
2014/02/11 职场文书
小学家长评语大全
2014/04/16 职场文书
2015年学校财务工作总结
2015/05/19 职场文书
「我的青春恋爱物语果然有问题。-妄言录-」第20卷封面公开
2022/03/21 日漫
利用nginx搭建RTMP视频点播、直播、HLS服务器
2022/05/25 Servers