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 七种邮件内容发送方法实例
Apr 22 Python
Python内置函数OCT详解
Nov 09 Python
Python中shape计算矩阵的方法示例
Apr 21 Python
Django内容增加富文本功能的实例
Oct 17 Python
Python编程把二叉树打印成多行代码
Jan 04 Python
通过pycharm使用git的步骤(图文详解)
Jun 13 Python
python打印直角三角形与等腰三角形实例代码
Oct 20 Python
Python标准库itertools的使用方法
Jan 17 Python
基于python检查矩阵计算结果
May 21 Python
深入浅析Python代码规范性检测
Jul 31 Python
Python -m参数原理及使用方法解析
Aug 21 Python
解决python的空格和tab混淆而报错的问题
Feb 26 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提取数据库内容中的图片地址并循环输出
2010/03/21 PHP
PHP中使用file_get_contents抓取网页中文乱码问题解决方法
2014/12/17 PHP
通过php删除xml文档内容的方法
2015/01/23 PHP
win7系统配置php+Apache+mysql环境的方法
2015/08/21 PHP
PHP+MySql+jQuery实现的"顶"和"踩"投票功能
2016/05/21 PHP
thinkphp 抓取网站的内容并且保存到本地的实例详解
2017/08/25 PHP
CodeIgniter框架数据库基本操作示例
2018/05/24 PHP
PHP函数积累总结
2019/03/19 PHP
Mac下关于PHP环境和扩展的安装详解
2019/10/17 PHP
Jquery 表单取值赋值的一些基本操作
2009/10/11 Javascript
JavaScript prototype 使用介绍
2013/08/29 Javascript
JavaScript 数组详解
2013/10/10 Javascript
一张表格告诉你windows.onload()与$(document).ready()的区别
2014/05/16 Javascript
JavaScript前补零操作实例
2015/03/11 Javascript
nodejs开发——express路由与中间件
2017/03/24 NodeJs
jQuery实现带右侧索引功能的通讯录示例【附源码下载】
2018/04/17 jQuery
详解JavaScript 新语法之Class 的私有属性与私有方法
2019/04/23 Javascript
vue store之状态管理模式的详细介绍
2019/06/13 Javascript
Jquery 动态添加元素并添加点击事件实现过程解析
2019/10/12 jQuery
用Python制作简单的朴素基数估计器的教程
2015/04/01 Python
numpy中实现ndarray数组返回符合特定条件的索引方法
2018/04/17 Python
在Python中表示一个对象的方法
2019/06/25 Python
python 画出使用分类器得到的决策边界
2019/08/21 Python
django 实现后台从富文本提取纯文本
2020/07/02 Python
CSS3动画效果回调处理详解
2014/12/10 HTML / CSS
STUBHUB日本:购买和出售全球活动门票
2018/07/01 全球购物
泰国国际航空公司官网:Thai Airways International
2019/12/04 全球购物
私有程序集与共享程序集有什么区别
2013/04/05 面试题
销售行业个人求职自荐信
2013/09/25 职场文书
医学毕业生自荐信
2013/10/11 职场文书
2014年小学生教师节演讲稿范文
2014/09/10 职场文书
国家领导干部党的群众路线教育实践活动批评与自我批评材料
2014/09/23 职场文书
2015年店长工作总结范文
2015/04/08 职场文书
房地产项目合作意向书
2015/05/08 职场文书
2016新年年会主持词
2015/07/06 职场文书
Python机器学习之PCA降维算法详解
2021/05/19 Python