Flask Error handling not working properly

Solution
import flask
from flask import Flask
from flask_restful import Resource, Api


app = Flask(__name__)

# Note that this doesn't inherit from HTTPException
class UnauthorizedToSendException(Exception):
    code = 400
    description = 'Unauthorized to Send'


@app.errorhandler(UnauthorizedToSendException)
def handle_unauth(e: Exception):
    rsp = {"error": e.description, "message": ""}
    if len(e.args) > 0:
        rsp["message"] = e.args[0]

    app.logger.error(f"{e.description}: {rsp['message']}")
    return flask.jsonify(rsp), e.code


class LaptopStatus(Resource):
    @staticmethod
    def get():
        raise UnauthorizedToSendException("Not authorized")


api = Api(app)
api.add_resource(LaptopStatus, '/status')


if __name__ == "__main__":
    # Setting this is important otherwise your raised
    # exception will just generate a regular exception
    app.config['PROPAGATE_EXCEPTIONS'] = True
    app.run()
#> python flask-test-propagate.py
# ... blah blah ...


#> curl http://localhost:5000/status
{"error":"Unauthorized to Send","message":"Not authorized"}
Api.error_router = lambda self, hnd, e: hnd(e)
import flask
from flask import Flask
from flask_restful import Resource, Api
from werkzeug.exceptions import HTTPException

# patch the Api class with a custom error router
# that just use's flask's handler (which is passed in as hnd)
Api.error_router = lambda self, hnd, e: hnd(e)

app = Flask(__name__)


class UnauthorizedToSendException(HTTPException):
    code = 400
    description = 'Unauthorized to Send'


@app.errorhandler(UnauthorizedToSendException)
def handle_unauth(e: Exception):
    print("custom!")
    rsp = {"error": e.description, "message": ""}
    if len(e.args) > 0:
        rsp["message"] = e.args[0]

    app.logger.error(f"{e.description}: {rsp['message']}")
    return flask.jsonify(rsp), e.code


class LaptopStatus(Resource):
    @staticmethod
    def get():
        raise UnauthorizedToSendException("Not authorized")


api = Api(app)
api.add_resource(LaptopStatus, '/status')


if __name__ == "__main__":
    app.run()
import flask
from flask import Flask
from flask.views import MethodView
from werkzeug.exceptions import HTTPException


app = Flask(__name__)


class UnauthorizedToSendException(HTTPException):
    code = 400
    description = 'Unauthorized to Send'


@app.errorhandler(UnauthorizedToSendException)
def handle_unauth(e: Exception):
    rsp = {"error": e.description, "message": ""}
    if len(e.args) > 0:
        rsp["message"] = e.args[0]

    app.logger.error(f"{e.description}: {rsp['message']}")
    return flask.jsonify(rsp), e.code


class LaptopStatusApi(MethodView):
    def get(self):
        raise UnauthorizedToSendException("Not authorized")


app.add_url_rule("/status", view_func=LaptopStatusApi.as_view("laptopstatus"))

if __name__ == "__main__":
    app.run()