"""Application error handling.""" import traceback from werkzeug.exceptions import HTTPException import MySQLdb as mdb from flask import Flask, request, render_template, current_app as app def handle_general_exception(exc: Exception): """Handle generic exceptions.""" trace = traceback.format_exc() app.logger.error( "Error (%s.%s): Generic unhandled exception!! (URI: %s)\n%s", exc.__class__.__module__, exc.__class__.__name__, request.url, trace) return render_template("unhandled_exception.html", trace=trace) def register_error_handlers(appl: Flask): """Register top-level error/exception handlers.""" appl.register_error_handler(Exception, handle_general_exception) appl.register_error_handler(HTTPException, handle_general_exception) appl.register_error_handler(mdb.MySQLError, handle_general_exception)