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合并文本文件示例
Feb 07 Python
用Python编写web API的教程
Apr 30 Python
用Python程序抓取网页的HTML信息的一个小实例
May 02 Python
在mac下查找python包存放路径site-packages的实现方法
Nov 06 Python
Python面向对象实现一个对象调用另一个对象操作示例
Apr 08 Python
python实现可变变量名方法详解
Jul 01 Python
python把ipynb文件转换成pdf文件过程详解
Jul 09 Python
django框架单表操作之增删改实例分析
Dec 16 Python
Python面向对象程序设计之类和对象、实例变量、类变量用法分析
Mar 23 Python
django 实现后台从富文本提取纯文本
Jul 02 Python
python 安装移动复制第三方库操作
Jul 13 Python
python软件测试Jmeter性能测试JDBC Request(结合数据库)的使用详解
Jan 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 GeoIP的使用教程
2011/03/09 PHP
php中字符串和正则表达式详解
2014/10/23 PHP
用js+xml自动生成表格的东西
2006/12/21 Javascript
jquery实现文本框鼠标右击无效以及不能输入的代码
2010/11/05 Javascript
jQuery LigerUI 使用教程表格篇(1)
2012/01/18 Javascript
固定网页背景图同时保持图片比例的思路代码
2013/08/15 Javascript
JavaScript也谈内存优化
2014/06/06 Javascript
在JavaScript中处理字符串之link()方法的使用
2015/06/08 Javascript
浅谈Cookie的生命周期问题
2016/08/02 Javascript
基于JavaScript实现复选框的全选和取消全选
2017/02/09 Javascript
Vue2.x中的Render函数详解
2017/05/30 Javascript
js学习总结之DOM2兼容处理顺序问题的解决方法
2017/07/27 Javascript
微信小程序模板和模块化用法实例分析
2017/11/28 Javascript
ajax请求+vue.js渲染+页面加载的示例
2018/02/11 Javascript
详解ES6通过WeakMap解决内存泄漏问题
2018/03/09 Javascript
nodejs+mongodb aggregate级联查询操作示例
2018/03/17 NodeJs
Vue表单demo v-model双向绑定问题
2018/06/29 Javascript
一文快速了解JQuery中的AJAX
2019/05/31 jQuery
python之消除前缀重命名的方法
2018/10/21 Python
python 获取微信好友列表的方法(微信web)
2019/02/21 Python
django数据模型on_delete, db_constraint的使用详解
2019/12/24 Python
Win10下安装并使用tensorflow-gpu1.8.0+python3.6全过程分析(显卡MX250+CUDA9.0+cudnn)
2020/02/17 Python
Python selenium页面加载慢超时的解决方案
2020/03/18 Python
Python MOCK SERVER moco模拟接口测试过程解析
2020/04/13 Python
Python能做什么
2020/06/02 Python
python 如何用urllib与服务端交互(发送和接收数据)
2021/03/04 Python
用HTML5实现手机摇一摇的功能的教程
2012/10/30 HTML / CSS
Nike德国官网:Nike.com (DE)
2018/11/13 全球购物
汽车维修专业个人求职信范文
2014/01/01 职场文书
迎新晚会主持词
2014/03/24 职场文书
2014年公务员个人工作总结
2014/11/22 职场文书
教师岗位职责
2015/02/03 职场文书
2016年大学自主招生自荐信范文
2015/03/24 职场文书
Django实现WebSocket在线聊天室功能(channels库)
2021/09/25 Python
OpenCV实现普通阈值
2021/11/17 Java/Android
排查MySQL生产环境索引没有效果
2022/04/11 MySQL