中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

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

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

使用Python將Exception異常錯誤堆棧信息寫入日志文件的案例

發布時間:2021-02-19 10:12:57 來源:億速云 閱讀:549 作者:小新 欄目:開發技術

這篇文章主要介紹了使用Python將Exception異常錯誤堆棧信息寫入日志文件的案例,具有一定借鑒價值,感興趣的朋友可以參考下,希望大家閱讀完這篇文章之后大有收獲,下面讓小編帶著大家一起了解一下。

假設需要把發生異常錯誤的信息寫入到log.txt日志文件中去:

import traceback
import logging
 
logging.basicConfig(filename='log.txt', level=logging.DEBUG,
     format='%(asctime)s - %(levelname)s - %(message)s')
 
try:
 raise Exception('發生異常錯誤信息')
except:
 #方案一,自己定義一個文件,自己把錯誤堆棧信息寫入文件。
 #errorFile = open('log.txt', 'a')
 #errorFile.write(traceback.format_exc())
 #errorFile.close()
 
 #方案二,使用Python標準日志管理維護工具。
 logging.debug(traceback.format_exc())

補充知識:Python---異常處理、調用棧、異常記錄、拋出錯誤

異常處理:

在python中,內置了一套錯誤處理機制:try:...except:...finally

語法:

try:
可能出現異常語句
except 錯誤類型1 as e:
異常處理
except 錯誤類型2 as e:
異常處理2
...
finally:
無論是否出錯,都會執行的語句

PS:python的錯誤也是類,所有錯誤的類都繼承自BaseException。

所以使用except時需注意,不但會捕獲該類型的錯誤,還會將其子類錯誤一網打盡

調用棧:

若異常沒有被捕獲,則會一直往上拋,最后拋給解釋器,解釋器打印錯誤的堆棧信息,然后退出。

因此,查找錯誤的時候:

1、先看錯誤類型

2、從下往上找

如:

使用Python將Exception異常錯誤堆棧信息寫入日志文件的案例

異常記錄:

如果只使用異常捕獲,結果只會打印錯誤類型,不會打印錯誤堆棧信息。如果不使用異常捕獲,python解釋器會打印錯誤類型及錯誤堆棧信息,但是程序也被結束了。使用異常記錄就可以把錯誤類型和錯誤堆棧信息都打印出來,而且程序可以繼續執行。

import logging

def foo(s):
 return 10/int(s)
def bar(s)
 return foo(s)*2

def mian():
 try:
  bar('0')
 except Exception as e:
  logging.exception(e)
main()
print("END")

拋出錯誤:

因為錯誤是class,捕獲一個錯誤就是捕獲到該class的一個實例,因此,錯誤并不是憑空產生的,而是有意創建并拋出的,pyhton的內置函數會拋出很多類型的錯誤,我們自己編寫的函數也可以拋出錯誤。

如果要拋出錯誤,首先根據需要,可以定義一個錯誤的class,選擇好繼承關系,然后,用raise語句拋出一個錯誤的實例。

class FooError(valueError):
 pass
def foo(s):
 n = int(s)
 if n == 0:
  raise FooError("invalid value :%s"%s)
 return 10/n
foo('0')

PS:只有在必要的時候才定義我們自己的錯誤類型,如果可以選擇python已有的內置的錯誤類型,盡量使用python內置的錯誤類型。

常見的錯誤類型

- AttributeError 試圖訪問一個對象沒有的屬性
- IOError 輸入/輸出異常 無法打開文件
- IndentationError 語法錯誤,代碼沒有對齊
- keyError 訪問的key字典中不存在
- NameError 使用一個還未賦值的對象的變量
- TypeError 傳入對象類型與要求不合法
- ValueError 傳入一個調用者不期望的值

感謝你能夠認真閱讀完這篇文章,希望小編分享的“使用Python將Exception異常錯誤堆棧信息寫入日志文件的案例”這篇文章對大家有幫助,同時也希望大家多多支持億速云,關注億速云行業資訊頻道,更多相關知識等著你來學習!

向AI問一下細節

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

AI

双辽市| 嘉祥县| 桑植县| 安乡县| 海晏县| 潮州市| 大新县| 麻城市| 南城县| 萨嘎县| 西昌市| 锡林郭勒盟| 阳信县| 平罗县| 桐庐县| 惠东县| 浪卡子县| 德安县| 博野县| 胶南市| 永平县| 山东省| 弥渡县| 吉隆县| 康平县| 宿迁市| 辽宁省| 承德县| 南宫市| 怀来县| 喀什市| 阿坝县| 涟源市| 东乌珠穆沁旗| 芦溪县| 宁安市| 阿拉善右旗| 衡东县| 长乐市| 昌宁县| 扶余县|