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

