App-Framework
view release on metacpan or search on metacpan
lib/App/Framework/Base/Object/ErrorHandle.pm view on Meta::CPAN
package App::Framework::Base::Object::ErrorHandle ;
=head1 NAME
App::Framework::Base::Object::ErrorHandle - Adds error handling to basic object
=head1 SYNOPSIS
use App::Framework::Base::Object::ErrorHandle ;
=head1 DESCRIPTION
Any object derived from this class can throw an error and some registered error handler will catch (and handle) that error.
Hierarchy of catch handlers is:
catch_fn set for this object instance
any registered global catch function (last registered first)
default handler
Global catch functions, when registered, are added to a stack so that the last one registered is called first.
Each handler must return either 1=handled, or 0=not handled to tell this object whether to move on to the next handler.
NOTE: The default handler may be over-ridden by any derived object.
This object is set up such that when used as stand-alone objects (i.e. outside of an application framework), then errors are handled
with die(), warn() etc.
=head1 DIAGNOSTICS
Setting the debug flag to level 1 prints out (to STDOUT) some debug messages, setting it to level 2 prints out more verbose messages.
=head1 AUTHOR
Steve Price C<< <sdprice at cpan.org> >>
=head1 BUGS
None that I know of!
=head1 INTERFACE
=over 4
=cut
use strict ;
use Carp ;
our $VERSION = "1.004" ;
#============================================================================================
# USES
#============================================================================================
use App::Framework::Base::Object ;
#============================================================================================
# OBJECT HIERARCHY
#============================================================================================
our @ISA = qw(App::Framework::Base::Object) ;
#============================================================================================
# GLOBALS
#============================================================================================
my %FIELDS = (
'errors' => [], # List of errors for this object
'catch_fn' => undef, # Function called if error is thrown
) ;
# Keep track of all errors
my @all_errors = () ;
# Error type priority
my %ERR_TYPES = (
'fatal' => 0x80,
'nonfatal' => 0x40,
'warning' => 0x08,
'note' => 0x04,
'none' => 0x00,
) ;
# Error handler stack
my @GLOBAL_ERROR_HANDLERS = () ;
( run in 0.602 second using v1.01-cache-2.11-cpan-e1769b4cff6 )