def test_exception_handler_lookup(exception_handler_app): class CustomError(Exception): pass class CustomServerError(ServerError): pass def custom_error_handler(): pass def server_error_handler(): pass def import_error_handler(): pass try: ModuleNotFoundError except Exception: class ModuleNotFoundError(ImportError): pass handler = ErrorHandler("auto") handler.add(ImportError, import_error_handler) handler.add(CustomError, custom_error_handler) handler.add(ServerError, server_error_handler) assert handler.lookup(ImportError(), None) == import_error_handler assert handler.lookup(ModuleNotFoundError(), None) == import_error_handler assert handler.lookup(CustomError(), None) == custom_error_handler assert handler.lookup(ServerError("Error"), None) == server_error_handler assert ( handler.lookup(CustomServerError("Error"), None) == server_error_handler ) # once again to ensure there is no caching bug assert handler.lookup(ImportError(), None) == import_error_handler assert handler.lookup(ModuleNotFoundError(), None) == import_error_handler assert handler.lookup(CustomError(), None) == custom_error_handler assert handler.lookup(ServerError("Error"), None) == server_error_handler assert ( handler.lookup(CustomServerError("Error"), None) == server_error_handler )
def test_exception_handler_lookup(): class CustomError(Exception): pass class CustomServerError(ServerError): pass def custom_error_handler(): pass def server_error_handler(): pass def import_error_handler(): pass try: ModuleNotFoundError except Exception: class ModuleNotFoundError(ImportError): pass handler = ErrorHandler() handler.add(ImportError, import_error_handler) handler.add(CustomError, custom_error_handler) handler.add(ServerError, server_error_handler) assert handler.lookup(ImportError()) == import_error_handler assert handler.lookup(ModuleNotFoundError()) == import_error_handler assert handler.lookup(CustomError()) == custom_error_handler assert handler.lookup(ServerError("Error")) == server_error_handler assert handler.lookup(CustomServerError("Error")) == server_error_handler # once again to ensure there is no caching bug assert handler.lookup(ImportError()) == import_error_handler assert handler.lookup(ModuleNotFoundError()) == import_error_handler assert handler.lookup(CustomError()) == custom_error_handler assert handler.lookup(ServerError("Error")) == server_error_handler assert handler.lookup(CustomServerError("Error")) == server_error_handler
def init_handler(): handler = ErrorHandler() handler.add(InvalidRequest, error_handler) handler.add(InvalidToken, error_handler) return handler
def error_handle(app: Sanic): handler = ErrorHandler() handler.add(ValidationError, lambda r, e: json({"message": str(e.messages)}, status=400)) handler.add( SanicException, lambda r, e: json({"message": e.__str__()}, status=e.status_code)) handler.add(SchemaException, lambda r, e: json({"message": e.__str__()}, 400)) handler.add(ApiException, lambda r, e: json({"message": e.msg}, status=e.code)) handler.add(PostgresError, lambda r, e: json({"message": e.__str__()}, status=500)) def handler_exception(r, e): error_logger.exception(e) return json({"message": e.__str__()}, status=500) handler.add(Exception, handler_exception) app.error_handler = handler