I have a traceback object that I want to show in the nice format I get when calling traceback.format_exc()
.
Is there a builtin function for this? Or a few lines of code?
I have a traceback object that I want to show in the nice format I get when calling traceback.format_exc()
.
Is there a builtin function for this? Or a few lines of code?
format_exc()
is really just
etype, value, tb = sys.exc_info()
return ''.join(format_exception(etype, value, tb, limit))
So if you have the exception type, value, and traceback ready, it should be easy. If you have just the exception, notice that format_exception()
is essentially:
a_list = ['Traceback (most recent call last):\n']
a_list = a_list + format_tb(tb, limit)
where limit
defaults to None
.
list
. Also format_tb()
is part of the traceback
module. You can simply from traceback import format_tb
and then use it. –
Cowman Have you tried traceback.print_tb or traceback.format_tb?
Couldn't find this anywhere, so I'm posting it here for future people and my future self.
try:
raise Exception('Not an Exception')
except Exception as err:
msg = "".join(traceback.format_exception(type(err), err, err.__traceback__))
print(msg)
This takes your exception and provides a string formatted identically to python's default exception printer/print_tb
traceback
docs give few examples and whole set of functions for formatting traceback objects.
© 2022 - 2024 — McMap. All rights reserved.
format_tb
, and is using the built inlist
as a variable. And I still don't understand how to print the traceback. – Turro