明霞山资源网 Design By www.htccd.com

因为有把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

明霞山资源网 Design By www.htccd.com
广告合作:本站广告合作请联系QQ:858582 申请时备注:广告合作(否则不回)
免责声明:本站文章均来自网站采集或用户投稿,网站不提供任何软件下载或自行开发的软件! 如有用户或公司发现本站内容信息存在侵权行为,请邮件告知! 858582#qq.com
明霞山资源网 Design By www.htccd.com

稳了!魔兽国服回归的3条重磅消息!官宣时间再确认!

昨天有一位朋友在大神群里分享,自己亚服账号被封号之后居然弹出了国服的封号信息对话框。

这里面让他访问的是一个国服的战网网址,com.cn和后面的zh都非常明白地表明这就是国服战网。

而他在复制这个网址并且进行登录之后,确实是网易的网址,也就是我们熟悉的停服之后国服发布的暴雪游戏产品运营到期开放退款的说明。这是一件比较奇怪的事情,因为以前都没有出现这样的情况,现在突然提示跳转到国服战网的网址,是不是说明了简体中文客户端已经开始进行更新了呢?