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写的ARP攻击代码实例
Jun 04 Python
零基础写python爬虫之urllib2中的两个重要概念:Openers和Handlers
Nov 05 Python
Python中用Decorator来简化元编程的教程
Apr 13 Python
Python设计实现的计算器功能完整实例
Aug 18 Python
python在ubuntu中的几种安装方法(小结)
Dec 08 Python
Python实现的端口扫描功能示例
Apr 08 Python
python DataFrame 修改列的顺序实例
Apr 10 Python
python用post访问restful服务接口的方法
Dec 07 Python
对于Python深浅拷贝的理解
Jul 29 Python
如何查看Django ORM执行的SQL语句的实现
Apr 20 Python
pandas之分组groupby()的使用整理与总结
Jun 18 Python
如何在scrapy中捕获并处理各种异常
Sep 28 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开发工具ZendStudio下Xdebug工具使用说明详解
2013/11/11 PHP
PHP获取文件夹大小函数用法实例
2015/07/01 PHP
如何使用php实现评委评分器
2015/07/31 PHP
php实现产品加入购物车功能(1)
2020/07/23 PHP
基于php编程规范(详解)
2017/08/17 PHP
javascript中的undefined 与 null 的区别  补充篇
2010/03/17 Javascript
javascript与有限状态机详解
2014/05/08 Javascript
js+html5操作sqlite数据库的方法
2016/02/02 Javascript
js创建jsonArray传输至后台及后台全面解析
2016/04/11 Javascript
Bootstrap实现弹性搜索框
2016/07/11 Javascript
聊一聊JS中的prototype
2016/09/29 Javascript
JavaScript判断浏览器对CSS3属性是否支持的多种方法
2016/11/13 Javascript
BootStrap实现轮播图效果(收藏)
2016/12/30 Javascript
jQuery编写设置和获取颜色的插件
2017/01/09 Javascript
详解vue-cli本地环境API代理设置和解决跨域
2017/09/05 Javascript
浅谈Node 调试工具入门教程
2018/03/20 Javascript
vue实现移动端拖动排序
2020/08/21 Javascript
python的常见命令注入威胁
2013/02/18 Python
Python中的作用域规则详解
2015/01/30 Python
11月编程语言排行榜 Python逆袭C#上升到第4
2017/11/15 Python
python3.5 tkinter实现页面跳转
2018/01/30 Python
python批量复制图片到另一个文件夹
2018/09/17 Python
python 自动轨迹绘制的实例代码
2019/07/05 Python
python rsync服务器之间文件夹同步脚本
2019/08/29 Python
python、Matlab求定积分的实现
2019/11/20 Python
python绘制BA无标度网络示例代码
2019/11/21 Python
python给list排序的简单方法
2020/12/10 Python
大学生活学习的自我评价
2013/12/03 职场文书
关于廉洁的广播稿
2014/01/30 职场文书
计划生育证明书写要求
2014/09/17 职场文书
2014年干部培训工作总结
2014/12/17 职场文书
欢迎词怎么写
2015/01/23 职场文书
工作犯错保证书
2015/05/11 职场文书
八月迷情观后感
2015/06/11 职场文书
大一新生军训新闻稿
2015/07/17 职场文书
2019辞职报告范本3篇!
2019/07/23 职场文书