python异常处理之try finally不报错的原因
作者:myself_oriented 发布时间:2023-05-01 00:02:40
标签:python,try,finally
因为有把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)
但是遇到了一个问题
程序显示“死掉后”并不会显示堆栈的错误信息
排查后发现,程序打印“堆栈的错误信息”并不是异步的,“堆栈的错误信息”会等到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捕获异常堆栈信息的几种方法
来源:https://segmentfault.com/a/1190000022673705


猜你喜欢
- Python 中主要有8种数据类型:number(数字)、string(字符串)、list(列表)、tuple(元组)、dict(字典)、s
- 本文实例讲述了js找出5个数中最大的一个数和倒数第二大的数实现方法。分享给大家供大家参考,具体如下:最大的一个数 :方法1:<scri
- 参考网址 https://www.jb51.net/article/29551.htmSELECT [StartDate] FROM [db
- 1.相信大家,在经过前面的初步学习之后,相信大家也想要有一个舒适的编程环境了。接下来将交给大家一个简单的配置环境Anaconda + VSC
- 作者: hezhiwu5@163.com <script language="javascr
- pytorch 中的 state_dict 是一个简单的python的字典对象,将每一层与它的对应参数建立映射关系.(如model的每一层的
- 今天重新研究了下VB里面的ScriptControl组件,发现asp里面也能调用。研究了下方法,后来和lcx讨论了下。得到了如下代码,在此感
- 1.函数就是对象,而函数名是指向函数对象的指针,不会与某个函数绑定。 2.函数没有重载(函数重载:同一个函数名对应着多个函数的实现.) Fo
- 先给出结论:要替换的字符数量不多时,可以直接链式replace()方法进行替换,效率非常高;如果要替换的字符数量较多,则推荐在 for 循环
- 自带验证器1、UniqueValidator用于验证(唯一)unique=True的字段,常用参数:queryset: required,用
- 这篇文章主要介绍了python 两个数据库postgresql对比,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价
- 相关的OBJECTPROPERTY可参考:http://msdn.microsoft.com/en-us/library/ms176105.
- 前因后果公司有人阳了,今天在家上班,突然小姨子就问我有没有baidu文库会员,想下载点东西,我心想这还要会员?用Python不是分分钟的事情
- 概述函数是基本的代码块,用于执行一个任务语法函数定义func 函数名称( 参数列表] ) (返回值列表]){ 执行语句}一.函数
- mysql-connector-java.jar包的下载教程:1.首先我们打开mysql的官网:https://www.mysql.com/
- 以下是IE7中新支持的属性:min-height,max-height,min-width,max-width这个hack还可以使最大高度兼
- 本文实例讲述了javascript使用Blob对象实现的下载文件操作。分享给大家供大家参考,具体如下:Blob对象前言环境操作总结Blob是
- Java的idea在更新2020.1时就更新了官方汉化,当时Pycharm还没用出现汉化,但这两天提示我更新2020.1.1的时候,我发现p
- Python 操作文件时,我们一般要先判断指定的文件或目录是否存在,不然容易产生异常。1.文件# 是否存在import osos.path.
- 曲线一解释这里是使用matplotlib来绘制正态分布的曲线。代码实现import numpy as npimport matplotlib