Python/Exception: Difference between revisions

From Fundamental Ramen
Jump to navigation Jump to search
(Created page with "<source lang="python"> try: n = 1 / 0 except Exception as e: print('It sucks!') print('Class: {}'.format(type(e).__name__)) print('Message: {}'.format(e))...")
 
No edit summary
 
(9 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: ===
<source lang="python">
<source lang="python">
try:
try:
     n = 1 / 0
     n = 1 / 0
except Exception as e:
except Exception as ex:
     print('It sucks!')
     print('It sucks!')
     print('Class: {}'.format(type(e).__name__))
     print('Class: {}'.format(type(ex).__name__))
     print('Message: {}'.format(e))
     print('Message: {}'.format(ex))
     print('Args:')
     print('Args:')
     for arg in e.args:
     for arg in ex.args:
         print('    {}'.format(arg))
         print('    {}'.format(arg))
</source>
=== traceback.print_exc() ===
<source lang="python">
import traceback
def b():
    n = 1 / 0
def a():
    b()
if __name__ == '__main__':
    try:
        a()
    except:
        traceback.print_exc()
</source>
=== sys.exc_info() ===
<source lang="python">
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))
</source>
</source>

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))