+1 vote
1 view
in Python by (20.2k points)

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.

1 Answer

0 votes
by (50.6k points)
edited ago by

To handle the assertion error you can use the traceback module below is the code that explains how to 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)

To know more about this you can have a look at the following video:-

...