While interpreting expressions or statements, errors may be raised. In such cases, the default POD behaviour is to nevertheless generate a POD result, into which a comment containing an explanation about the error, together with the Python traceback, is produced at the place where the expression result or the document part being the target of a statement would have been generated.
The example below defines an expression usingĀ a variable namedĀ "A" that is not defined in the context.

Instead of containing the result of evaluating A+B, the result contains a commentĀ givingĀ an explanation about the error and the Python traceback, as shown below.

In the next example, we try to render a table if a condition is True, but evaluating the condition produces an errorĀ (name zzz is not defined).

The table is rendered but only contains a commentĀ explaining what happened.

The following example illustrates errors produced while evaluating forĀ statements.

The result is as follows.

The previous examples were all examples of runtimeĀ errors, ie, errors that were produced while rendering the template. Errors may also occur at parsingĀ time, when PODĀ reads the content of comments and conditional fields to analyse the Python-like expressions. In the example below, statements do not respect the POD syntax.

Complete error messages are present as comments.

RaisingĀ classical exceptions
I know some people are uncomfortable with errors being embedded as notes within ODT results. It is true that, with this system, is is not possible to automatically detect that an error occurred: a human being must consult the file to realize that it contains an error. On the other side, if the error is not that important, the result is nevertheless generated and may do the job, while the error is being corrected. It is up to you to decideĀ what best fits your needs. If you want real exceptions to be raised, set parameter raiseOnError to True on the Renderer, as illustrated here:
Renderer('SimpleTest.odt', globals(), 'result.odt', raiseOnError=True)
Alert - When your POD template is an ODS template, raiseOnError is always forced to True. A technical problem prevents POD to dump notes with tracebacks into ODS results.