Python/Exception
< Python
Jump to navigation
Jump to search
Customized messages for traceback
import io
import sys
import traceback
def b():
n = 1 / 0
def a():
b()
if __name__ == '__main__':
try:
a()
except:
exc_type, exc_val, exc_tb = sys.exc_info()
msgio = io.StringIO()
msgio.write('Found an exception "%s" (%s) at:' % (exc_val, exc_type.__name__))
ss = traceback.extract_tb(exc_tb)
ss.reverse()
indent_level = 1
for frm in ss:
msgio.write('\n')
msgio.write(' ' * indent_level)
msgio.write('%s:%s - %s' % (frm.filename, frm.lineno, frm.line))
indent_level += 1
msg = msgio.getvalue()
msgio.close()
print(msg)
except ... as ex:
try:
n = 1 / 0
except Exception as ex:
print('It sucks!')
print('Class: {}'.format(type(ex).__name__))
print('Message: {}'.format(ex))
print('Args:')
for arg in ex.args:
print(' {}'.format(arg))
traceback.print_exc()
import traceback
def b():
n = 1 / 0
def a():
b()
if __name__ == '__main__':
try:
a()
except:
traceback.print_exc()
sys.exc_info()
import sys
import traceback
def b():
n = 1 / 0
def a():
b()
if __name__ == '__main__':
try:
a()
except:
exc_type, exc_val, exc_tb = sys.exc_info()
traceback.print_tb(exc_tb)
print('%s: %s' % (exc_type.__name__, exc_val))