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使用tkinter实现ui界面简单实例
Jan 10 Python
Python利用Beautiful Soup模块创建对象详解
Mar 27 Python
学习Python3 Dlib19.7进行人脸面部识别
Jan 24 Python
详解django三种文件下载方式
Apr 06 Python
Python应用库大全总结
May 30 Python
python leetcode 字符串相乘实例详解
Sep 03 Python
django云端留言板实例详解
Jul 22 Python
Python安装OpenCV的示例代码
Mar 05 Python
python模拟斗地主发牌
Apr 22 Python
在Windows上安装和配置 Jupyter Lab 作为桌面级应用程序教程
Apr 22 Python
Pandas将列表(List)转换为数据框(Dataframe)
Apr 24 Python
Python使用psutil库对系统数据进行采集监控的方法
Aug 23 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
Zend Studio (eclipse)使用速度优化方法
2011/03/23 PHP
PHP正则表达式替换站点关键字链接后空白的解决方法
2014/09/16 PHP
php格式化日期实例分析
2014/11/12 PHP
详解PHP归并排序的实现
2016/10/18 PHP
thinkPHP5框架接口写法简单示例
2019/08/05 PHP
Yii框架Session与Cookie使用方法示例
2019/10/14 PHP
jQuery双向列表选择器DIV模拟版
2016/11/01 Javascript
微信小程序 video详解及简单实例
2017/01/16 Javascript
如何正确理解javascript的模块化
2017/03/02 Javascript
JS实现获取图片大小和预览的方法完整实例【兼容IE和其它浏览器】
2017/04/24 Javascript
node.js中debug模块的简单介绍与使用
2017/04/25 Javascript
vue.js中过滤器的使用教程
2017/06/08 Javascript
VUE axios发送跨域请求需要注意的问题
2017/07/06 Javascript
vuejs事件中心管理组件间的通信详解
2017/08/09 Javascript
ES6使用Set数据结构实现数组的交集、并集、差集功能示例
2017/10/31 Javascript
vue组件父子间通信详解(三)
2017/11/07 Javascript
浅析JavaScript 函数柯里化
2020/09/08 Javascript
[01:53]3.19 DOTA2发布会 现场精彩Coser表演
2014/03/25 DOTA
举例详解Python中循环语句的嵌套使用
2015/05/14 Python
浅析Python中signal包的使用
2015/11/13 Python
Python一键查找iOS项目中未使用的图片、音频、视频资源
2019/08/12 Python
使用python实现多维数据降维操作
2020/02/24 Python
哪种Python框架适合你?简单介绍几种主流Python框架
2020/08/04 Python
安纳塔拉酒店度假村及水疗官方网站:Anantara Hotel
2016/08/25 全球购物
猫途鹰:全球领先的旅游点评社区
2017/04/07 全球购物
美国男士内衣品牌:Tommy John
2017/12/22 全球购物
Carolina工作鞋官网:Carolina Footwear
2019/03/14 全球购物
Bravofly德国:预订廉价航班和酒店
2019/09/22 全球购物
英国羊皮鞋类领先品牌:Just Sheepskin
2019/12/12 全球购物
校园活动策划书范文
2014/01/10 职场文书
2015年圣诞节活动总结
2015/03/24 职场文书
2015年财务个人工作总结范文
2015/05/22 职场文书
Python爬虫进阶之Beautiful Soup库详解
2021/04/29 Python
Vue vee-validate插件的简单使用
2021/06/22 Vue.js
MySQL 条件查询的常用操作
2022/04/28 MySQL
React如何使用axios请求数据并把数据渲染到组件
2022/08/05 Javascript