.\" -*- mode: troff; coding: utf-8 -*- .\" Automatically generated by Pod::Man v6.0.2 (Pod::Simple 3.45) .\" .\" 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 .. .\" \*(C` and \*(C' are quotes in nroff, nothing in troff, for use with C<>. .ie n \{\ . ds C` "" . ds C' "" 'br\} .el\{\ . 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 .\" .\" Required to disable full justification in groff 1.23.0. .if n .ds AD l .\" ======================================================================== .\" .IX Title "Log::Report::Exception 3" .TH Log::Report::Exception 3 2025-12-12 "perl v5.42.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 Log::Report::Exception \- a single generated event .SH SYNOPSIS .IX Header "SYNOPSIS" .Vb 4 \& # created within a try block \& try { error "help!" }; \& my $exception = $@\->wasFatal; \& $exception\->throw if $exception; \& \& $@\->reportFatal; # combination of above two lines \& \& my $message = $exception\->message; # the Log::Report::Message \& \& if($message\->inClass(\*(Aqdie\*(Aq)) ... \& if($exception\->inClass(\*(Aqdie\*(Aq)) ... # same \& if($@\->wasFatal(class => \*(Aqdie\*(Aq)) ... # same .Ve .SH DESCRIPTION .IX Header "DESCRIPTION" In Log::Report, exceptions are not as extended as available in languages as Java: you do not create classes for them. The only thing an exception object does, is capture some information about an (untranslated) report. .SH OVERLOADED .IX Header "OVERLOADED" .IP "overload: \fB""""\fR stringification" 4 .IX Item "overload: """" stringification" Produces "reason: message" via \fBtoString()\fR. .IP "overload: \fBbool\fR boolean condition" 4 .IX Item "overload: bool boolean condition" Always returns \f(CW\*(C`true\*(C'\fR: the exception object exists. .SH METHODS .IX Header "METHODS" .SS Constructors .IX Subsection "Constructors" .ie n .IP $class\->\fBnew\fR(%options) 4 .el .IP \f(CW$class\fR\->\fBnew\fR(%options) 4 .IX Item "$class->new(%options)" Create a new exception object, which is basically a \f(CW\*(C`message\*(C'\fR which was produced for a \f(CW\*(C`reason\*(C'\fR. .Sp .Vb 4 \& \-Option \-\-Default \& message \& reason \& report_opts +{ } .Ve .RS 4 .IP "message => Log::Report::Message" 2 .IX Item "message => Log::Report::Message" .PD 0 .ie n .IP "reason => $reason" 2 .el .IP "reason => \f(CW$reason\fR" 2 .IX Item "reason => $reason" .IP "report_opts => \e%opts" 2 .IX Item "report_opts => %opts" .PD .RE .RS 4 .RE .SS Accessors .IX Subsection "Accessors" .ie n .IP $obj\->\fBisFatal\fR() 4 .el .IP \f(CW$obj\fR\->\fBisFatal\fR() 4 .IX Item "$obj->isFatal()" Returns whether this exception has a severity which makes it fatal when thrown. [1.34] This can have been overruled with the \f(CW\*(C`is_fatal\*(C'\fR attribute. See \fBLog::Report::Util::is_fatal()\fR. .Sp » example: .Sp .Vb 2 \& if($ex\->isFatal) { $ex\->throw(reason => \*(AqALERT\*(Aq) } \& else { $ex\->throw } .Ve .ie n .IP "$obj\->\fBmessage\fR( [$message] )" 4 .el .IP "\f(CW$obj\fR\->\fBmessage\fR( [$message] )" 4 .IX Item "$obj->message( [$message] )" Change the \f(CW$message\fR of the exception, must be a Log::Report::Message object. .Sp When you use a \f(CW\*(C`Log::Report::Message\*(C'\fR object, you will get a new one returned. Therefore, if you want to modify the message in an exception, you have to re\-assign the result of the modification. .Sp » example: .Sp .Vb 2 \& $e\->message\->concat(\*(Aq!!\*(Aq)); # will not work! \& $e\->message($e\->message\->concat(\*(Aq!!\*(Aq)); \& \& $e\->message(_\|_x"some message {xyz}", xyz => $xyz); .Ve .ie n .IP "$obj\->\fBreason\fR( [$reason] )" 4 .el .IP "\f(CW$obj\fR\->\fBreason\fR( [$reason] )" 4 .IX Item "$obj->reason( [$reason] )" .ie n .IP $obj\->\fBreport_opts\fR() 4 .el .IP \f(CW$obj\fR\->\fBreport_opts\fR() 4 .IX Item "$obj->report_opts()" .SS Processing .IX Subsection "Processing" .ie n .IP $obj\->\fBinClass\fR($class|Regexp) 4 .el .IP \f(CW$obj\fR\->\fBinClass\fR($class|Regexp) 4 .IX Item "$obj->inClass($class|Regexp)" Check whether any of the classes listed in the message match \f(CW$class\fR (string) or the Regexp. This uses \fBLog::Report::Message::inClass()\fR. .ie n .IP "$obj\->\fBprint\fR( [$fh] )" 4 .el .IP "\f(CW$obj\fR\->\fBprint\fR( [$fh] )" 4 .IX Item "$obj->print( [$fh] )" The default filehandle is STDOUT. .Sp » example: .Sp .Vb 2 \& print $exception; # via overloading \& $exception\->print; # OO style .Ve .ie n .IP $obj\->\fBthrow\fR(%options) 4 .el .IP \f(CW$obj\fR\->\fBthrow\fR(%options) 4 .IX Item "$obj->throw(%options)" Insert the message contained in the exception into the currently defined dispatchers. The \f(CW\*(C`throw\*(C'\fR as method name is commonly known exception related terminology for \f(CW\*(C`report\*(C'\fR. .Sp The \f(CW%options\fR overrule the captured options to \fBLog::Report::report()\fR. This can be used to overrule a destination. Also, the reason can be changed. .Sp Returned is the LIST of dispatchers which have accepted the forwarded exception. .Sp » example: overrule defaults to report .Sp .Vb 2 \& try { report {to => \*(Aqdefault\*(Aq}, ERROR => \*(Aqoops!\*(Aq }; \& $@\->reportFatal(to => \*(Aqsyslog\*(Aq); \& \& my ($syslog) = $exception\->throw(to => \*(Aqsyslog\*(Aq); \& my @disps = $@\->wasFatal\->throw(reason => \*(AqWARNING\*(Aq); .Ve .ie n .IP "$obj\->\fBtoHTML\fR( [$locale] )" 4 .el .IP "\f(CW$obj\fR\->\fBtoHTML\fR( [$locale] )" 4 .IX Item "$obj->toHTML( [$locale] )" [1.11] Calls \fBtoString()\fR and then escapes HTML volatile characters. .ie n .IP "$obj\->\fBtoString\fR( [$locale] )" 4 .el .IP "\f(CW$obj\fR\->\fBtoString\fR( [$locale] )" 4 .IX Item "$obj->toString( [$locale] )" Prints the reason and the message. Differently from \fBthrow()\fR, this only represents the textual content: it does not re\-cast the exceptions to higher levels. .Sp » example: printing exceptions .Sp .Vb 2 \& print $_\->toString for $@\->exceptions; \& print $_ for $@\->exceptions; # via overloading .Ve .SH "SEE ALSO" .IX Header "SEE ALSO" This module is part of Log\-Report version 1.43, built on December 05, 2025. Website: \fIhttp://perl.overmeer.net/CPAN/\fR .SH LICENSE .IX Header "LICENSE" For contributors see file ChangeLog. .PP This software is copyright (c) 2007\-2025 by Mark Overmeer. .PP This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself.