<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def add(self, handler, name=None, exception_handlers=()):
 """Add a handler to the route. :param handler: The "handler" callable to add. :param name: Optional. When specified, the return value of this handler will be added to the context under ``name``. :param exception_handlers: Optional. A list of ``(types, handler)`` tuples, where ``types`` is an exception type (or tuple of types) to handle, and ``handler`` is a callable. See below for example. **Exception Handlers** When an exception occurs in a handler, ``exc_info`` will be temporarily added to the context and the list of exception handlers will be checked for an appropriate handler. If no handler can be found, the exception will be re-raised to the caller of the route. If an appropriate exception handler is found, it will be called (the context will be injected, so handlers may take an ``exc_info`` argument), and its return value will be used in place of the original handler's return value. Examples: 'bar' 'SUCCESS!' Traceback (most recent call last):
 KeyError: 'foo' """

        self.route.append((name, handler, exception_handlers))