欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

使用Python將Exception異常錯(cuò)誤堆棧信息寫入日志文件

 更新時(shí)間:2020年04月08日 11:49:30   作者:zhangphil  
這篇文章主要介紹了使用Python將Exception異常錯(cuò)誤堆棧信息寫入日志文件,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧

假設(shè)需要把發(fā)生異常錯(cuò)誤的信息寫入到log.txt日志文件中去:

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

補(bǔ)充知識(shí):Python---異常處理、調(diào)用棧、異常記錄、拋出錯(cuò)誤

異常處理:

在python中,內(nèi)置了一套錯(cuò)誤處理機(jī)制:try:...except:...finally

語法:

try:
可能出現(xiàn)異常語句
except 錯(cuò)誤類型1 as e:
異常處理
except 錯(cuò)誤類型2 as e:
異常處理2
...
finally:
無論是否出錯(cuò),都會(huì)執(zhí)行的語句

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

所以使用except時(shí)需注意,不但會(huì)捕獲該類型的錯(cuò)誤,還會(huì)將其子類錯(cuò)誤一網(wǎng)打盡

調(diào)用棧:

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

因此,查找錯(cuò)誤的時(shí)候:

1、先看錯(cuò)誤類型

2、從下往上找

如:

異常記錄:

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

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") 

拋出錯(cuò)誤:

因?yàn)殄e(cuò)誤是class,捕獲一個(gè)錯(cuò)誤就是捕獲到該class的一個(gè)實(shí)例,因此,錯(cuò)誤并不是憑空產(chǎn)生的,而是有意創(chuàng)建并拋出的,pyhton的內(nèi)置函數(shù)會(huì)拋出很多類型的錯(cuò)誤,我們自己編寫的函數(shù)也可以拋出錯(cuò)誤。

如果要拋出錯(cuò)誤,首先根據(jù)需要,可以定義一個(gè)錯(cuò)誤的class,選擇好繼承關(guān)系,然后,用raise語句拋出一個(gè)錯(cuò)誤的實(shí)例。

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:只有在必要的時(shí)候才定義我們自己的錯(cuò)誤類型,如果可以選擇python已有的內(nèi)置的錯(cuò)誤類型,盡量使用python內(nèi)置的錯(cuò)誤類型。

常見的錯(cuò)誤類型

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

以上這篇使用Python將Exception異常錯(cuò)誤堆棧信息寫入日志文件就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • 線程和進(jìn)程的區(qū)別及Python代碼實(shí)例

    線程和進(jìn)程的區(qū)別及Python代碼實(shí)例

    這篇文章主要介紹了線程和進(jìn)程的區(qū)別及Python代碼實(shí)例,本文給出了一個(gè)python的腳本讓一個(gè)進(jìn)程中運(yùn)行兩個(gè)線程,需要的朋友可以參考下
    2015-02-02
  • pymongo如何通過oplog獲取數(shù)據(jù)(mongodb)

    pymongo如何通過oplog獲取數(shù)據(jù)(mongodb)

    使用MongoDB的oplog(操作日志)進(jìn)行數(shù)據(jù)同步是高級(jí)的用法,主要用于復(fù)制和故障恢復(fù),這篇文章主要介紹了pymongo通過oplog獲取數(shù)據(jù)(mongodb),需要的朋友可以參考下
    2023-09-09
  • python中的字典及嵌套遍歷

    python中的字典及嵌套遍歷

    這篇文章主要介紹了python中的字典及嵌套遍歷,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-05-05
  • Python正則表達(dá)式的使用范例詳解

    Python正則表達(dá)式的使用范例詳解

    本文將是一系列關(guān)于Python正則表達(dá)式文章的其中一部分。在這個(gè)系列的第一篇文章中,我們將重點(diǎn)討論如何使用Python中的正則表達(dá)式并突出Python中一些獨(dú)有的特性。
    2014-08-08
  • python中openpyxl和xlsxwriter對(duì)Excel的操作方法

    python中openpyxl和xlsxwriter對(duì)Excel的操作方法

    這篇文章主要介紹了python中openpyxl和xlsxwriter對(duì)Excel的操作方法,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-03-03
  • python paramiko實(shí)現(xiàn)ssh遠(yuǎn)程訪問的方法

    python paramiko實(shí)現(xiàn)ssh遠(yuǎn)程訪問的方法

    這篇文章主要介紹了python paramiko模塊實(shí)現(xiàn)ssh遠(yuǎn)程訪問的方法,大家參考使用
    2013-12-12
  • 為什么是 Python -m

    為什么是 Python -m

    這篇文章給大家介紹了Python -m的含義及python -m 和 python 的區(qū)別解析,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友參考下吧
    2020-06-06
  • python數(shù)據(jù)分析之如何刪除value=0的行

    python數(shù)據(jù)分析之如何刪除value=0的行

    這篇文章主要給大家介紹了關(guān)于python數(shù)據(jù)分析之如何刪除value=0的行的相關(guān)資料,文中通過實(shí)例代碼以及圖文介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用Python具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2022-12-12
  • 詳解Python之Scrapy爬蟲教程N(yùn)BA球員數(shù)據(jù)存放到Mysql數(shù)據(jù)庫

    詳解Python之Scrapy爬蟲教程N(yùn)BA球員數(shù)據(jù)存放到Mysql數(shù)據(jù)庫

    這篇文章主要介紹了詳解Python之Scrapy爬蟲教程N(yùn)BA球員數(shù)據(jù)存放到Mysql數(shù)據(jù)庫,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-01-01
  • 簡(jiǎn)單了解python高階函數(shù)map/reduce

    簡(jiǎn)單了解python高階函數(shù)map/reduce

    這篇文章主要介紹了簡(jiǎn)單了解python高階函數(shù)map/reduce,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-06-06

最新評(píng)論