Bottle.py ships with an import to handle throwing HTTPErrors and route to a function.
Firstly, the documentation claims I can (and so do several examples):
This works for me:
from bottle import error, run, route, abort @error(500) def custom500(error): return 'my custom message' @route("/") def index(): abort("Boo!") run()