tal:on-error syntax:
argument ::= (['text'] | 'structure') expression
The tal:on-error statement provides error handling for your
template. When a TAL statement produces an error, the TAL
interpreter searches for a tal:on-error statement on the same
element, then on the enclosing element, and so forth. The first
tal:on-error found is invoked. It is treated as a tal:content
statement.
A local variable error is set. This variable has these
attributes:
typevaluetraceback The simplest sort of tal:on-error statement has a literal error
string or nothing for an expression. A more complex handler may
call a script that examines the error and either emits error text
or raises an exception to propagate the error outwards.
Simple error message:
<b tal:on-error="string: Username is not defined!"
tal:content="here/getUsername">Ishmael</b>
Removing elements with errors:
<b tal:on-error="nothing"
tal:content="here/getUsername">Ishmael</b>
Calling an error-handling script:
<div tal:on-error="structure here/errorScript">
...
</div>
Here's what the error-handling script might look like:
## Script (Python) "errHandler"
##bind namespace=_
##
error=_['error']
if error.type==ZeroDivisionError:
return "<p>Can't divide by zero.</p>"
else
return """<p>An error ocurred.</p>
<p>Error type: %s</p>
<p>Error value: %s</p>""" % (error.type,
error.value)