I want to handle AssertionError
s 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.
try..except
, that's a sign yourtry..except
block is too big. Second, the kind of thing meant to be caught byassert
isn't something the user should ever see. If they see anAssertionError
, the proper course of action is for them to contact the programmer and say "WTF?!". – WarmongerAssertionError
s shouldn't be seen by the user, and then what the user should do when he sees one. It can't be both! – Hyaena