Syntax:
#errorCatcher CLASS #errorCatcher $PLACEHOLDER_TO_AN_ERROR_CATCHER_INSTANCE
ErrorCatcher is a debugging tool that catches exceptions that occur
inside $placeholder tags and provides a customizable warning to the
developer. Normally, the first missing namespace value raises a
NameMapper.NotFound error and halts the filling of the template. This
requires the developer to resolve the exceptions in order without seeing the
subsequent output. When an ErrorCatcher is enabled, the developer can
see all the exceptions at once as well as the template output around them.
The Cheetah.ErrorCatchers module defines the base class for
ErrorCatchers:
class ErrorCatcher:
_exceptionsToCatch = (NameMapper.NotFound,)
def __init__(self, templateObj):
pass
def exceptions(self):
return self._exceptionsToCatch
def warn(self, exc_val, code, rawCode, lineCol):
return rawCode
This ErrorCatcher catches NameMapper.NotFound exceptions and leaves the
offending placeholder visible in its raw form in the template output. If the
following template is executed:
#errorCatcher Echo #set $iExist = 'Here I am!' Here's a good placeholder: $iExist Here's bad placeholder: $iDontExist
the output will be:
Here's a good placeholder: Here I am! Here's bad placeholder: $iDontExist
The base class shown above is also accessible under the alias
Cheetah.ErrorCatchers.Echo. Cheetah.ErrorCatchers also provides a
number of specialized subclasses that warn about exceptions in different ways.
Cheetah.ErrorCatchers.BigEcho will output
Here's a good placeholder: Here I am! Here's bad placeholder: ===============<$iDontExist could not be found>===============
ErrorCatcher has a significant performance impact and is turned off by default.
It can also be turned on with the Template class' 'errorCatcher'
keyword argument. The value of this argument should either be a string
specifying which of the classes in Cheetah.ErrorCatchers to use, or a
class that subclasses Cheetah.ErrorCatchers.ErrorCatcher. The
#errorCatcher directive can also be used to change the errorCatcher part
way through a template.
Cheetah.ErrorCatchers.ListErrors will produce the same ouput as
Echo while maintaining a list of the errors that can be retrieved later.
To retrieve the list, use the Template class' 'errorCatcher'
method to retrieve the errorCatcher and then call its listErrors method.
ErrorCatcher doesn't catch exceptions raised inside directives.