.\" Automatically generated by Pod::Man 4.14 (Pod::Simple 3.43) .\" .\" Standard preamble: .\" ======================================================================== .de Sp \" Vertical space (when we can't use .PP) .if t .sp .5v .if n .sp .. .de Vb \" Begin verbatim text .ft CW .nf .ne \\$1 .. .de Ve \" End verbatim text .ft R .fi .. .\" Set up some character translations and predefined strings. \*(-- will .\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left .\" double quote, and \*(R" will give a right double quote. \*(C+ will .\" give a nicer C++. Capital omega is used to do unbreakable dashes and .\" therefore won't be available. \*(C` and \*(C' expand to `' in nroff, .\" nothing in troff, for use with C<>. .tr \(*W- .ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p' .ie n \{\ . ds -- \(*W- . ds PI pi . if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch . if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\" diablo 12 pitch . ds L" "" . ds R" "" . ds C` "" . ds C' "" 'br\} .el\{\ . ds -- \|\(em\| . ds PI \(*p . ds L" `` . ds R" '' . ds C` . ds C' 'br\} .\" .\" Escape single quotes in literal strings from groff's Unicode transform. .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" .\" If the F register is >0, we'll generate index entries on stderr for .\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index .\" entries marked with X<> in POD. Of course, you'll have to process the .\" output yourself in some meaningful fashion. .\" .\" Avoid warning from groff about undefined register 'F'. .de IX .. .nr rF 0 .if \n(.g .if rF .nr rF 1 .if (\n(rF:(\n(.g==0)) \{\ . if \nF \{\ . de IX . tm Index:\\$1\t\\n%\t"\\$2" .. . if !\nF==2 \{\ . nr % 0 . nr F 2 . \} . \} .\} .rr rF .\" ======================================================================== .\" .IX Title "Text::MicroMason::CatchErrors 3pm" .TH Text::MicroMason::CatchErrors 3pm "2023-08-10" "perl v5.36.0" "User Contributed Perl Documentation" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l .nh .SH "NAME" Text::MicroMason::CatchErrors \- Add Exception Catching for Templates .SH "SYNOPSIS" .IX Header "SYNOPSIS" Instead of using this class directly, pass its name to be mixed in: .PP .Vb 2 \& use Text::MicroMason; \& my $mason = Text::MicroMason\->new( \-CatchErrors ); .Ve .PP Use the standard compile and execute methods to parse and evaluate templates: .PP .Vb 2 \& print scalar $mason\->compile( text=>$template )\->( @%args ); \& print scalar $mason\->execute( text=>$template, @args ); .Ve .PP Result is undef on exception, plus an error message if in list context: .PP .Vb 2 \& ($coderef, $error) = $mason\->compile( text=>$template ); \& ($result, $error) = $mason\->execute( text=>$template, \*(Aqname\*(Aq=>\*(AqDave\*(Aq ); .Ve .SH "DESCRIPTION" .IX Header "DESCRIPTION" This package adds exception catching to MicroMason, allowing you to check an error variable rather than wrapping every call in an eval. .PP Both compilation and run-time errors in your template are handled as fatal exceptions. The base MicroMason class will \fBcroak()\fR if you attempt to compile or execute a template which contains a incorrect fragment of Perl syntax. Similarly, if the Perl code in your template causes \fBdie()\fR or \&\fBcroak()\fR to be called, this will interrupt your program unless caught by an eval block. .PP This class provides that error catching behavior for the compile and execute methods. .PP In a scalar context they return the result of the call, or undef if it failed; in a list context they return the results of the call (undef if it failed) followed by the error message (undef if it succeeded). .SS "Public Methods" .IX Subsection "Public Methods" .IP "\fBcompile()\fR" 4 .IX Item "compile()" .Vb 2 \& $code_ref = $mason\->compile( text => $template, %options ); \& ($coderef, $error) = $mason\->compile( text=>$template, %options ); .Ve .Sp Uses an eval block to provide an exception catching wrapper for the compile method. .IP "\fBexecute()\fR" 4 .IX Item "execute()" .Vb 2 \& $result = $mason\->execute( text => $template, @arguments ); \& ($result, $error) = $mason\->execute( text=>$template, \*(Aqname\*(Aq=>\*(AqDave\*(Aq ); .Ve .Sp Uses an eval block to provide an exception catching wrapper for the execute method. .SH "SEE ALSO" .IX Header "SEE ALSO" For an overview of this templating framework, see Text::MicroMason. .PP This is a mixin class intended for use with Text::MicroMason::Base. .PP For distribution, installation, support, copyright and license information, see Text::MicroMason::Docs::ReadMe.