Christian Theune writes:
The DTML Documentation has a slight difference to the real world in it:
The description is as follows: raise tag syntax: <dtml-raise ExceptionName|ExceptionExpression> </dtml-raise>
but the "expression" is confusing when you want to use userdefined expressions. In plain python it goes following way: The expression is when you want non-constant exceptions, given by an expression, e.g.
<dtml-raise expr="mapping and {}[key] or object.key"> This raises a "KeyError" or an "AttributeError" dependent on "mapping".
So this, combined with the upper description seems to be as following:
<dtml-try>
<dtml-raise "'stringExc'"> asdf </dtml-raise>
<dtml-except "'stringExc'"> your error code here
</dtml-try>
"dtml-except" does not support "expr" arguments. Thus, "'stringExc'" is interpreted as the exception "'stringExc'" and this is not the same as "stringExc". "dtml-raise" interprets the "..." as expr-argument and evaluates the content. The result is the exception "stringExc".
... In the ZopeBook there is a hint on <dtml-raise type="404"> asdf </dtml-raise> which comes up to be the most clean way. It does not matter whether or not you enclose the "type" attribute value in "...".
The complete working example, most clean imo is following: <dtml-try>
<dtml-raise type="userDefined"> asdf </dtml-raise>
<dtml-except userDefined> asdf
</dtml-except> You can omit the "..." around "userDefined", if you like.
Btw: am i getting only responses if i turn of GPG Signaturing? I do not think so, although it is noise in my view.
This is a technical discussion group; we do not need to verify identities.... Dieter