python的assertionerror_如何在Python中处理AssertionError并找出发生在哪一行或语句上?...

论坛 期权论坛 编程之家     
选择匿名的用户   2021-5-28 15:22   11   0

I want to handle AssertionErrors both to hide unnecessary parts of the stack trace from the user and to print a message as to why the error occurred and what the user should do about it.

Is there any way to find out on which line or statement the assert failed within the except block?

try:

assert True

assert 7 == 7

assert 1 == 2

# many more statements like this

except AssertionError:

print 'Houston, we have a problem.'

print

print 'An error occurred on line ???? in statement ???'

exit(1)

I don't want to have to add this to every assert statement:

assert 7 == 7, "7 == 7"

because it repeats information.

解决方案

Use the traceback module:

import sys

import traceback

try:

assert True

assert 7 == 7

assert 1 == 2

# many more statements like this

except AssertionError:

_, _, tb = sys.exc_info()

traceback.print_tb(tb) # Fixed format

tb_info = traceback.extract_tb(tb)

filename, line, func, text = tb_info[-1]

print('An error occurred on line {} in statement {}'.format(line, text))

exit(1)

分享到 :
0 人收藏
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

积分:3875789
帖子:775174
精华:0
期权论坛 期权论坛
发布
内容

下载期权论坛手机APP