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多线程实现同步的四种方式
May 02 Python
利用numpy+matplotlib绘图的基本操作教程
May 03 Python
python 判断网络连通的实现方法
Apr 22 Python
对Python 文件夹遍历和文件查找的实例讲解
Apr 26 Python
使用python 3实现发送邮件功能
Jun 15 Python
pyqt5 从本地选择图片 并显示在label上的实例
Jun 13 Python
python求平均数、方差、中位数的例子
Aug 22 Python
Python使用matplotlib 模块scatter方法画散点图示例
Sep 27 Python
python类中super() 的使用解析
Dec 19 Python
python ftplib模块使用代码实例
Dec 31 Python
Python任务自动化工具tox使用教程
Mar 17 Python
python算的上脚本语言吗
Jun 22 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
模仿OSO的论坛(五)
2006/10/09 PHP
Yii学习总结之安装配置
2015/02/22 PHP
php使用curl出现Expect:100-continue解决方法
2015/03/03 PHP
基于swoole实现多人聊天室
2018/06/14 PHP
PHP8.0新功能之Match表达式的使用
2020/07/19 PHP
用Javascript做flash做的事..才完成的一个类.Auntion Action var 0.1
2007/02/23 Javascript
jQuery基于xml格式数据实现模糊查询及分页功能的方法
2016/12/25 Javascript
Bootstrap Table快速完美搭建后台管理系统
2017/09/20 Javascript
react-router v4如何使用history控制路由跳转详解
2018/01/09 Javascript
详解webpack多页面配置记录
2018/01/22 Javascript
详解node.js的http模块实例演示
2018/07/12 Javascript
Vue商品控件与购物车联动效果的实例代码
2019/07/21 Javascript
node中使用log4js4.x版本记录日志的方法
2019/08/20 Javascript
[48:54]VGJ.T vs infamous Supermajor小组赛D组败者组第一轮 BO3 第二场 6.3
2018/06/04 DOTA
python生成日历实例解析
2014/08/21 Python
Python抓取京东图书评论数据
2014/08/31 Python
Python提示[Errno 32]Broken pipe导致线程crash错误解决方法
2014/11/19 Python
利用Python实现命令行版的火车票查看器
2016/08/05 Python
python多进程中的内存复制(实例讲解)
2018/01/05 Python
Python管理Windows服务小脚本
2018/03/12 Python
django1.11.1 models 数据库同步方法
2018/05/30 Python
pyqt实现.ui文件批量转换为对应.py文件脚本
2019/06/19 Python
python3 webp转gif格式的实现示例
2019/12/10 Python
css3实现背景图片拉伸效果像桌面壁纸一样
2013/08/19 HTML / CSS
css3发光搜索表单分享
2014/04/11 HTML / CSS
联想香港官方网站及网店:Lenovo香港
2018/04/13 全球购物
Lululemon英国官网:加拿大瑜伽服装品牌
2019/01/14 全球购物
咖啡馆创业计划书
2014/01/26 职场文书
财务科科长岗位职责
2014/03/10 职场文书
教师党员个人自我剖析材料
2014/09/29 职场文书
优秀校长事迹材料
2014/12/24 职场文书
什么是检讨书?检讨书的格式及范文
2019/11/05 职场文书
Python爬虫进阶之Beautiful Soup库详解
2021/04/29 Python
通过Python把学姐照片做成拼图游戏
2022/02/15 Python
浅谈如何保证Mysql主从一致
2022/03/13 MySQL
winserver2019安装软件一直卡在应用程序正在为首次使用做准备
2022/06/10 Servers