The Template::Exception module defines an object class for representing exceptions within the template processing life cycle. Exceptions can be raised by modules within the Template Toolkit, or can be generated and returned by user code bound to template variables.

or by simply calling die() with an error string. This is automagically caught and converted to an exception of 'undef' type (that's the literal string 'undef' rather than Perl's undefined value) which can then be handled in the usual way.

die "I'm sorry Dave, I can't do that";

Each exception is defined by its type and a information component (e.g. error message). The type can be any identifying string and may contain dotted components (e.g. 'foo', 'foo.bar', 'foo.bar.baz'). Exception types are considered to be hierarchical such that 'foo.bar' would be a specific type of the more general 'foo' type.