Log::Report::Exception(3pm) | User Contributed Perl Documentation | Log::Report::Exception(3pm) |
Log::Report::Exception - a collected report
# 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('die')) ... if($exception->inClass('die')) ... # same if($@->wasFatal(class => 'die')) ... # same
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.
-Option --Default message <required> reason <required> report_opts {}
example:
if($ex->isFatal) { $ex->throw(reason => 'ALERT') } else { $ex->throw }
When you use a "Log::Report::Message" 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.
example:
$e->message->concat('!!')); # will not work! $e->message($e->message->concat('!!')); $e->message(__x"some message {msg}", msg => $xyz);
example:
print $exception; # via overloading $exception->print; # OO style
The %options overrule the captured options to Log::Report::report(). This can be used to overrule a destination. Also, the reason can be changed.
example: overrule defaults to report
try { report {to => 'stderr'}, ERROR => 'oops!' }; $@->reportFatal(to => 'syslog'); $exception->throw(to => 'syslog'); $@->wasFatal->throw(reason => 'WARNING');
example: printing exceptions
print $_->toString for $@->exceptions; print $_ for $@->exceptions; # via overloading
This module is part of Log-Report distribution version 1.36, built on October 27, 2023. Website: http://perl.overmeer.net/CPAN/
Copyrights 2007-2023 by [Mark Overmeer <markov@cpan.org>]. For other contributors see ChangeLog.
This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself. See http://dev.perl.org/licenses/
2023-10-29 | perl v5.36.0 |