Python/Exception: Difference between revisions
< Python
Jump to navigation
Jump to search
No edit summary |
|||
| (2 intermediate revisions by the same user not shown) | |||
| Line 1: | Line 1: | ||
=== Customized messages for traceback === | |||
<source lang="python"> | |||
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) | |||
</source> | |||
=== except ... as ex: === | === except ... as ex: === | ||
| Line 13: | Line 47: | ||
</source> | </source> | ||
=== traceback.print_exc === | === traceback.print_exc() === | ||
<source lang="python"> | <source lang="python"> | ||
| Line 37: | Line 71: | ||
import traceback | import traceback | ||
def | def b(): | ||
n = 1 / 0 | n = 1 / 0 | ||
def a(): | def a(): | ||
Latest revision as of 04:34, 26 September 2019
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))