激情久久久_欧美视频区_成人av免费_不卡视频一二三区_欧美精品在欧美一区二区少妇_欧美一区二区三区的

腳本之家,腳本語言編程技術及教程分享平臺!
分類導航

Python|VBS|Ruby|Lua|perl|VBA|Golang|PowerShell|Erlang|autoit|Dos|bat|

服務器之家 - 腳本之家 - Python - Python捕獲異常堆棧信息的幾種方法(小結)

Python捕獲異常堆棧信息的幾種方法(小結)

2020-05-19 10:01xiemanR Python

這篇文章主要介紹了Python捕獲異常堆棧信息的幾種方法,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧

程序出錯的時候,我們往往需要根據異常信息來找到具體出錯的代碼。簡單地用print打印異常信息并不能很好地追溯出錯的代碼:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
# -*- coding: utf-8 -*-
 
 
def foo(a, b):
  c = a + b
  raise ValueError('test')
  return c
 
 
def bar(a):
  print('a + 100:', foo(a, 100))
 
 
def main():
  try:
    bar(100)
  except Exception as e:
    print(repr(e))
 
if __name__ == '__main__':
  main()

輸出:

ValueError('test',)

打印的異常信息不夠詳細,對錯誤追蹤沒有多大幫助。這時候異常堆棧信息就派上用場了。下面簡單介紹幾種打印異常堆棧信息的方法。

1.最簡單的方法之一就是使用logging.exception

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
# -*- coding: utf-8 -*-
import logging
 
 
def foo(a, b):
  c = a + b
  raise ValueError('test')
  return c
 
 
def bar(a):
  print('a + 100:', foo(a, 100))
 
 
def main():
  try:
    bar(100)
  except Exception as e:
    logging.exception(e)
 
if __name__ == '__main__':
  main()

輸出:

ERROR:root:test
Traceback (most recent call last):
  File "E:/git_work/scrapy_ppt/test.py", line 16, in main
    bar(100)
  File "E:/git_work/scrapy_ppt/test.py", line 11, in bar
    print('a + 100:', foo(a, 100))
  File "E:/git_work/scrapy_ppt/test.py", line 6, in foo
    raise ValueError('test')
ValueError: test

從異常堆棧信息中我們可以不費力氣就找出錯誤代碼是哪一行。

2.其它方法:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
# -*- coding: utf-8 -*-
import traceback
import sys
 
 
def foo(a, b):
  c = a + b
  raise ValueError('test')
  return c
 
 
def bar(a):
  print('a + 100:', foo(a, 100))
 
 
def main():
  try:
    bar(100)
  except Exception as e:
    # 方法二
    traceback.print_exc()
 
    # 方法三
    msg = traceback.format_exc()
    print(msg)
 
    et, ev, tb = sys.exc_info()
    # 方法四
    traceback.print_tb(tb)
 
    # 方法五
    traceback.print_exception(et, ev, tb)
 
    # 方法六
    msg = traceback.format_exception(et, ev, tb)
    for m in msg:
      print(m)
 
if __name__ == '__main__':
  main()

到此這篇關于Python捕獲異常堆棧信息的幾種方法(小結)的文章就介紹到這了,更多相關Python捕獲異常堆棧信息內容請搜索服務器之家以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持服務器之家! 

原文鏈接:https://blog.csdn.net/xiemanR/article/details/82934936

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 九九热九九热 | 国产正在播放 | 成熟女人特级毛片www免费 | av中文在线观看 | 逼片视频 | 2021免费日韩视频网 | 亚洲国产精品久久久久久久久久 | 亚洲一区二区三区高清视频 | 未成年人在线观看 | 久久久久免费精品国产小说色大师 | 亚洲一区二区三区高清 | 精品亚洲二区 | 欧美一极视频 | 草久免费 | 亚洲精品欧美二区三区中文字幕 | 久久久久久久一区 | av电影在线免费观看 | 日韩大片在线永久观看视频网站免费 | 一二区成人影院电影网 | 护士xxxx | xxxx hd videos| 成人黄色一级电影 | 久久精品亚洲一区二区 | 精品国产一区二区三区久久久蜜月 | www.狠狠操.com | 亚洲精品在线观看网站 | 午夜视频成人 | 国产精彩视频在线 | 日本在线播放一区二区三区 | 欧美一区二区网站 | 一区二区三区日韩电影 | 国产在线看一区 | 国产中文av在线 | 九九热九九热 | 国产乱淫a∨片免费视频 | 日本一区二区高清不卡 | 欧美成人一区二区视频 | 日韩精品一二三区 | 一区二区久久久久草草 | 国产1区2区3区中文字幕 | 牛牛a级毛片在线播放 |