国产成人精品久久免费动漫-国产成人精品天堂-国产成人精品区在线观看-国产成人精品日本-a级毛片无码免费真人-a级毛片毛片免费观看久潮喷

您的位置:首頁技術文章
文章詳情頁

python 追蹤except信息方式

瀏覽:9日期:2022-07-27 15:32:02

看下面這個函數

def test(): sum = 3/0 if __name__ == ’__main__’: test()

除0肯定是不對的,會引發一個except,內容如下:

File 'E:SrcdongshengTestPythontesttrace_back.py', line 23, in <module>test()File 'E:SrcdongshengTestPythontesttrace_back.py', line 19, in testsum = 3/0ZeroDivisionError: integer division or modulo by zero

上面的提示,是在IDE中運行時出現的,實際在線上運行腳本時,一般會用nohup 方式啟動,輸出內容會寫入到nohup.out文件中,但這個文件里的內容可能非常多,很雜亂,不利于異常的排查。

python 提供了traceback ,可以完美的輸出except發生時的信息,就和上面的內容一樣,而且可以輸入到指定的文件之中,所以,不妨寫一個裝飾器,修飾那些需要監督的函數,當他們發生異常時,記錄下有關異常的信息。

#coding=utf-8from functools import wrapsimport traceback def except_trace(filename): def decorate(func): @wraps(func) def wrapper(*args,**kwargs): try: func(*args,**kwargs) except: fp = open(filename,’w’) traceback.print_exc(file=fp) fp.close() return wrapper return decorate@except_trace(’1.txt’)def test(): sum = 3/0 if __name__ == ’__main__’: test()

這一次,發生異常后,有關異常的信息會輸入到1.txt文件中,這個文件中只包含異常的信息,方便查看。

補充知識:Python 的 except 怪癖

讓我來展示一下我最喜歡的 Python 怪癖。你希望這段 Python 代碼做什么?

如果你是從另一種編程語言過來學習 Python 的,你可能希望except子句引入嵌套范圍,因此在子句中賦值給 e 不會影響外部作用域中已有的 e 變量。然而,在 Python 中,控制結構通常不引入嵌套作用域(列表推導是一個例外),所以如果你有更多的 Python 經驗,你可能會期望它打印一個ZeroDivisionError實例。

實際上,在標準 CPython 實現中,它什么也不打印;同時,最后一行將引發一個NameError。這是一個 bug 嗎?事實上,這是故意的。如果查看 except 子句生成的字節碼,可以看到:

當控制流退出except塊時,Python 將從作用域中刪除該名稱。為什么?因為異常持有對當前棧幀的引用,該棧幀包含作用域內的所有內容。由于Python主要是通過引用計數來管理內存主體的,這意味著當前作用域內的任何內容都不會被釋放,直到下一輪垃圾收集運行 (如果有的話)。目前的行為是內存使用、易于實現和語言整潔之間的折衷。它有點缺點,但我認為它體現了我喜歡Python的一點:不讓純粹性妨礙實用性。

但這只解釋了DELETE_NAME指令。為什么 CPython 把e設為None,即便隨后立即就刪除了這個變量?好吧,設想你和 CPython 團隊有相同的想法,并且決定在 except 塊的末尾清理異常引用:

在except塊的末尾,CPython 將嘗試刪除你已經刪除的名字e!為了解決這個問題,CPython 在刪除e之前賦值e = None,以確保e存在。

以上這篇python 追蹤except信息方式就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持好吧啦網。

標簽: Python 編程
相關文章:
主站蜘蛛池模板: 日韩女人做爰大片 | 成人9久久国产精品品 | 国产粉嫩高中生无套第一次 | 天天狠操| 国产亚洲人成网站在线观看不卡 | 毛片一级| 国产高清在线精品一区在线 | 中国人免费观看高清在线观看二区 | 一级毛片在线观看视频 | 欧美成人aaa大片 | 亚洲综合国产精品 | 亚洲国产夜色在线观看 | 日韩一级a毛片欧美一级 | 三级视频在线播放线观看 | 久久亚洲在线 | 九九香蕉网| 中国的毛片 | 窝窝午夜看片七次郎青草视频 | 成年人在线观看视频免费 | 末成年娇小性色xxxxx | 中文字幕亚洲精品久久 | 天堂mv亚洲mv在线播放9蜜 | 久久久久久日本一区99 | 欧美大片一级特黄 | 日韩欧美在线观看视频一区二区 | 久久受www免费人成看片 | 国产一区二区在线视频播放 | 欧美一级毛片在线播放 | 国产免费一级在线观看 | 国产亚洲欧美ai在线看片 | 台湾精品视频在线播放 | 久久综合精品国产一区二区三区无 | 久久www免费人成看国产片 | 精品一区二区三区免费毛片爱 | 大视频在线爱爱爱爱 | 日本毛片免费看 | 欧美人成在线观看 | 一级片成人 | 手机在线观看黄色网址 | 91综合精品网站久久 | 德国女人一级毛片免费 |