> Read the latest version of this page
Edit me on GitHub

Source code for pyramid.exceptions

from zope.configuration.exceptions import ConfigurationError as ZCE
from zope.interface import implements

from pyramid.decorator import reify
from pyramid.interfaces import IExceptionResponse
import cgi

class ExceptionResponse(Exception):
    """ Abstract class to support behaving as a WSGI response object """
    implements(IExceptionResponse)
    status = None

    def __init__(self, message=''):
        Exception.__init__(self, message) # B / C
        self.message = message

    @reify # defer execution until asked explicitly
    def app_iter(self):
         return [
             """
             <html>
             <title>%s</title>
             <body>
             <h1>%s</h1>
             <code>%s</code>
             </body>
             </html>
             """ % (self.status, self.status, cgi.escape(self.message))
             ]

    @reify # defer execution until asked explicitly
    def headerlist(self):
        return [
            ('Content-Length', str(len(self.app_iter[0]))),
            ('Content-Type', 'text/html')
            ]
        
        
[docs]class Forbidden(ExceptionResponse): """ Raise this exception within :term:`view` code to immediately return the :term:`forbidden view` to the invoking user. Usually this is a basic ``403`` page, but the forbidden view can be customized as necessary. See :ref:`changing_the_forbidden_view`. This exception's constructor accepts a single positional argument, which should be a string. The value of this string will be placed onto the request by the router as the ``exception_message`` attribute, for availability to the :term:`Forbidden View`. """ status = '403 Forbidden'
[docs]class NotFound(ExceptionResponse): """ Raise this exception within :term:`view` code to immediately return the :term:`Not Found view` to the invoking user. Usually this is a basic ``404`` page, but the Not Found view can be customized as necessary. See :ref:`changing_the_notfound_view`. This exception's constructor accepts a single positional argument, which should be a string. The value of this string will be placed into the WSGI environment by the router as the ``exception_message`` attribute, for availability to the :term:`Not Found View`. """ status = '404 Not Found'
class PredicateMismatch(NotFound): """ Internal exception (not an API) raised by multiviews when no view matches. This exception subclasses the ``NotFound`` exception only one reason: if it reaches the main exception handler, it should be treated like a ``NotFound`` by any exception view registrations. """
[docs]class URLDecodeError(UnicodeDecodeError): """ This exception is raised when :app:`Pyramid` cannot successfully decode a URL or a URL path segment. This exception it behaves just like the Python builtin :exc:`UnicodeDecodeError`. It is a subclass of the builtin :exc:`UnicodeDecodeError` exception only for identity purposes, mostly so an exception view can be registered when a URL cannot be decoded. """
[docs]class ConfigurationError(ZCE): """ Raised when inappropriate input values are supplied to an API method of a :term:`Configurator`"""