Log::Report::Dispatcher::Try - capture all reports as exceptions
Log::Report::Dispatcher::Try is a Log::Report::Dispatcher
try { ... }; # mind the ';' !! if($@) { # signals something went wrong if(try {...}) { # block ended normally my $x = try { read_temperature() }; my @x = try { read_lines_from_file() }; try { ... } # no comma!! mode => 'DEBUG', accept => 'ERROR-'; try sub { ... }, # with comma mode => 'DEBUG', accept => 'ALL'; try \&myhandler, accept => 'ERROR-'; print ref $@; # Log::Report::Dispatcher::Try $@->reportFatal; # re-dispatch result of try block $@->reportAll; # ... also warnings etc if($@) {...} # if errors if($@->failed) { # same # } if($@->success) { # no errors # } try { # something causes an error report, which is caught report {to => 'stderr'}, FAILURE => 'no network'; }; $@->reportFatal(to => 'syslog'); # overrule destination print $@->exceptions; # no re-cast, just print
The Log::Report::try() catches errors in the block (CODE reference) which is just following the function name. All dispatchers are temporarily disabled by try, and messages which are reported are collected within a temporary dispatcher named try. When the CODE has run, that try dispatcher is returned in $@, and all original dispatchers reinstated.
try
$@
Then, after the try has finished, the routine which used the "try" should decide what to do with the collected reports. These reports are collected as Log::Report::Exception objects. They can be ignored, or thrown to a higher level try... causing an exit of the program if there is none.
Only when initiated with a FILENAME, the file will be closed. In any other case, nothing will be done.
-Option --Defined in --Default accept Log::Report::Dispatcher depend on mode charset Log::Report::Dispatcher <undef> died undef exceptions [] format_reason Log::Report::Dispatcher 'LOWERCASE' locale Log::Report::Dispatcher <system locale> mode Log::Report::Dispatcher 'NORMAL'
The exit string ($@) of the eval'ed block.
The message which was reported by eval, which is used internally to catch problems in the try block.
eval
Returns all collected Log::Report::Exceptions. The last of them may be a fatal one. The other are non-fatal.
Log::Report::Exceptions
See "Accessors" in Log::Report::Dispatcher
See "Logging" in Log::Report::Dispatcher
Other dispatchers translate the message here, and make it leave the program. However, messages in a "try" block are only captured in an intermediate layer: they may never be presented to an end-users. And for sure, we do not know the language yet.
The MESSAGE is either a STRING or a Log::Report::Message.
Re-cast the messages in all collect exceptions into the defined dispatchers, which were disabled during the try block. The OPTIONS will end-up as HASH-of-OPTIONS to Log::Report::report(); see Log::Report::Exception::throw() which does the job.
Re-cast only the fatal message to the defined dispatchers. If the block was left without problems, then nothing will be done. The OPTIONS will end-up as HASH-of-OPTIONS to Log::Report::report(); see Log::Report::Exception::throw() which does the job.
Returns true if the block was left with an fatal message.
If this object is kept in $@, and someone uses this as string, we want to show the fatal error message.
The message is not very informative for the good cause: we do not want people to simply print the $@, but wish for a re-cast of the message using reportAll() or reportFatal().
Returns true if the block exited normally.
Returns the Log::Report::Exception which caused the "try" block to die, otherwise an empty LIST (undef).
-Option--Default class undef
Only return the exception if it was fatal, and in the same time in the specified CLASS (as string) or matches the REGEX. See Log::Report::Message::inClass()
Returns true if the previous try block did produce a terminal error. This "try" object is assigned to $@, and the usual perl syntax is if($@) {...error-handler...}.
if($@) {...error-handler...}
When $@ is used the traditional way, it is checked to have a string content. In this case, stringify into the fatal error or nothing.
This module is part of Log-Report distribution version 0.993, built on March 28, 2013. Website: http://perl.overmeer.net/log-report/
Copyrights 2007-2013 by [Mark Overmeer]. 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://www.perl.com/perl/misc/Artistic.html
To install Log::Report, copy and paste the appropriate command in to your terminal.
cpanm
cpanm Log::Report
CPAN shell
perl -MCPAN -e shell install Log::Report
For more information on module installation, please visit the detailed CPAN module installation guide.