catcher icon indicating copy to clipboard operation
catcher copied to clipboard

Beautiful tracebacks for Python

Catcher - Beautiful tracebacks

python-catcher module generates highly informative crash reports (including source code and locals) in two possible forms:

  • generates a text file report, which you can save it where it is needed to;
  • generates HTML-page-like report, submits it to the web and generates a permalink.

Quick use for HTML-page-like report::

import catcher

try:
    launch_important_stuff()
except Exception as e:
    report = catcher.collect(e)
    html = catcher.formatters.HTMLFormatter().format(report, maxdepth=4)
    url = catcher.uploaders.AjentiOrgUploader().upload(html)

    print('Application has crashed. Please submit this link along with the bug report:')
    print(url)

Quick use for text file report::

import catcher

try:
    print('you cannot' / 'divide this')
except Exception as e:
    report = catcher.collect(e)
    text = catcher.formatters.TextFormatter().format(report)
    with open(f'crash_{report.timestamp}.txt', 'w') as f: f.write(text)

Example text file report::

Error report
~~~~~~~~~~~~
Report generated using python-catcher

Exception has been ocurred at 2021-01-12 20:09:53 and indices the following:
‖   TypeError: unsupported operand type(s) for /: 'str' and 'str'

Traceback:
‖   @ mytest.py, line 6 (frame #0):
‖   |    import catcher
‖   |    
‖   |    try:
‖   |        print('you cannot' / 'divide this')
‖   |    except Exception as e:
‖   |        report = catcher.collect(e)
‖   |>>>     text = catcher.formatters.TextFormatter().format(report)
‖   |        with open(f'crash_{report.timestamp}.txt', 'w', encoding = 'utf-8') as f: f.write(text)
‖


Locals:
‖   Frames 0 don`t have locals
‖   
    

Report overview:

.. image:: http://habrastorage.org/storage2/f05/ea4/779/f05ea4779fccf0087fa24a380bd92b45.png

One stack frame with locals:

.. image:: http://habrastorage.org/storage2/4b8/188/5fe/4b81885fe8582d835c557af1d71884b9.png