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)
但是遇到了一個問題
程序顯示“死掉后”并不會顯示堆棧的錯誤信息
排查后發(fā)現(xiàn),程序打印“堆棧的錯誤信息”并不是異步的,“堆棧的錯誤信息”會等到finally內(nèi)的代碼塊執(zhí)行完畢后才會輸出
所以,把代碼塊改一下,
需要導入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)
這種打印方式是異步的,不知道是多線程還是協(xié)程還是啥
更多追蹤堆棧錯誤信息的,可以看這篇文章
Python捕獲異常堆棧信息的幾種方法
到此這篇關于python異常處理之try finally不報錯的原因的文章就介紹到這了,更多相關python try finally不報錯內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
python如何實現(xiàn)一個刷網(wǎng)頁小程序
這篇文章主要給大家介紹了關于利用python如何實現(xiàn)一個刷網(wǎng)頁小程序的相關資料,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2018-11-11python 實現(xiàn)存儲數(shù)據(jù)到txt和pdf文檔及亂碼問題的解決
這篇文章主要介紹了python 實現(xiàn)存儲數(shù)據(jù)到txt和pdf文檔及亂碼問題的解決,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2021-03-03python+Tesseract OCR實現(xiàn)截屏識別文字
pytesseract Python常用pytesseract進行圖片上的文字識別,本文主要介紹了python+Tesseract?OCR實現(xiàn)截屏識別文字,具有一定的參考價值,感興趣的可以了解一下2023-11-11Python機器學習之手寫KNN算法預測城市空氣質(zhì)量
KNN(K-Nearest Neighbor)最鄰近分類算法是數(shù)據(jù)挖掘分類(classification)技術中常用算法之一,本文將介紹如何通過KNN算法實現(xiàn)城市空氣質(zhì)量的預測,感興趣的同學可以了解一下2021-12-12