Error handlingΒΆ

Custom error handlers may be added using the following code.:

class ForbiddenExceptionErrorHandler(ErrorHandler):
    def can_handle(self, e):
        return isinstance(e, ForbiddenException)

    def handle(self, e):
        return "Forbidden!"


class FileNotFoundExceptionErrorHandler(ErrorHandler):
    def can_handle(self, e):
        return isinstance(e, FileNotFoundException)

    def handle(self, e):
        return "FileResource not found!"


class DefaultErrorHandler(ErrorHandler):
    def can_handle(self, e):
        return isinstance(e, Exception)

    def handle(self, e):
        @crossdomain()
        def error_handler():
            return "error"

        return error_handler()


class ErrorHandlerModule(Module):
    def configure(self, binder: Binder) -> None:
        register(FileNotFoundExceptionErrorHandler())
        register(ForbiddenExceptionErrorHandler())
        register(DefaultErrorHandler())

The call to register function is best timed when a module is created. To set status code for a web response use zsl.task.job_context.StatusCodeResponder.