91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

python中try finally不報錯怎么辦

發布時間:2020-07-23 15:31:20 來源:億速云 閱讀:165 作者:小豬 欄目:開發技術

這篇文章主要講解了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)

但是遇到了一個問題

程序顯示“死掉后”并不會顯示堆棧的錯誤信息

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中try finally不報錯怎么辦有進一步的了解,如果還想學習更多內容,歡迎關注億速云行業資訊頻道。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

木兰县| 白玉县| 古交市| 古浪县| 宁城县| 治多县| 兴仁县| 建始县| 开封市| 登封市| 临漳县| 乳山市| 阜新市| 蒲江县| 班玛县| 林口县| 武义县| 玉林市| 娱乐| 郸城县| 裕民县| 保德县| 烟台市| 青神县| 高要市| 崇义县| 汕尾市| 岱山县| 清河县| 水富县| 南阳市| 镶黄旗| 玉环县| 呈贡县| 西乌珠穆沁旗| 辛集市| 兴文县| 甘南县| 神农架林区| 杭锦后旗| 渭南市|