您好,登錄后才能下訂單哦!
這篇文章主要講解了python中try finally不報錯怎么辦,內(nèi)容清晰明了,對此有興趣的小伙伴可以學習一下,相信大家閱讀完之后會有幫助。
因為有把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é)程還是啥
看完上述內(nèi)容,是不是對python中try finally不報錯怎么辦有進一步的了解,如果還想學習更多內(nèi)容,歡迎關注億速云行業(yè)資訊頻道。
免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權內(nèi)容。