Manejando con gracia las excepciones de la aplicación en una aplicación de Tornado

Sobre la base de algunos google instalé el siguiente controlador de errores. Sin embargo, las excepciones de python que parecen devolver un http 500 no están atrapadas por estas cosas, aunque las de 404 sí lo están. Con las declaraciones impresas que he dejado en el código que aparece a continuación, puedo ver que no afecta a ninguna de estas rutinas. ¿Qué debería estar haciendo realmente?

class ErrorHandler(tornado.web.RequestHandler):
"""Generates an error response with status_code for all requests."""
def __init__ (self, application, request, status_code):
    print 'In ErrorHandler init'
    tornado.web.RequestHandler.__init__(self, application, request)
    self.set_status(status_code)

def get_error_html (self, status_code, **kwargs):
    print 'In get_error_html. status_code: ', status_code
    if status_code in [403, 404, 500, 503]:
        filename = '%d.html' % status_code
        print 'rendering filename: ', filename
        return self.render_string(filename, title=config.get_title())

    return "<html><title>%(code)d: %(message)s</title>" \
            "<body class='bodyErrorPage'>%(code)d: %(message)s</body>"\
            "</html>" % {
            "code": status_code,
            "message": httplib.responses[status_code],
            }

def prepare (self):
    print 'In prepare...'
    raise tornado.web.HTTPError(self._status_code)

Respuestas a la pregunta(3)

Su respuesta a la pregunta