## @file # Exception container file, contains definitions for RWDE Exceptions # # $Id: Exceptions.pm 432 2008-05-02 19:17:09Z damjan $ ## @class RWDE::BaseException # System defined exceptions are based off of the default behaviour of this base exception class package RWDE::BaseException; use strict; use warnings; use RWDE::DB::DbRegistry; use base qw(Error); use overload ('""' => 'stringify'); ## @cmethod object new() # Override for the "new" method in the Error base class, initializes the instance the way we want # @return Initialized instance of Error sub new { my ($proto, $params) = @_; my $class = ref($proto) || $proto; my $info = defined $$params{info} ? $$params{info} : 'none'; my $value = defined $$params{value} ? $$params{info} : 'none'; if (defined $$params{abort_transaction}) { RWDE::DB::DbRegistry->abort_transaction(); } local $Error::Depth = $Error::Depth + 1; local $Error::Debug = 1; # Enables storing of stacktrace my $exception = $class->SUPER::new(-text => $info, -value => $value); return $exception; } sub is_retry { my ($self) = @_; return $self->{'-value'} =~ m/retry/ig; } 1; #Exception class definitions for RWDE ## @class RWDE::DevelException # devel - caught with RWDE::DevelException - developer only exceptions, typically for unplanned behaviour package RWDE::DevelException; use base qw(RWDE::BaseException); 1; ## @class RWDE::DataMissingException # data.missing - caught with RWDE::DataMissingException - missing data detected package RWDE::DataMissingException; use base qw(RWDE::BaseException); 1; ## @class RWDE::DataBadException # Invalid data detected package RWDE::DataBadException; use base qw(RWDE::BaseException); 1; ## @class RWDE::DataLimitException # Limit or threshold exceeded package RWDE::DataLimitException; use base qw(RWDE::BaseException); 1; ## @class RWDE::DataDuplicateException # Discovered duplicate data (typically db related) package RWDE::DataDuplicateException; use base qw(RWDE::BaseException); 1; ## @class RWDE::DataNotFoundException # Expected data does not exist package RWDE::DataNotFoundException; use base qw(RWDE::BaseException); 1; ## @class RWDE::BadPasswordException # Problems accepting a password package RWDE::BadPasswordException; use base qw(RWDE::BaseException); 1; ## @class RWDE::SSLException # Problems with http SSL connections package RWDE::SSLException; use base qw(RWDE::BaseException); 1; ## @class RWDE::Web::SessionMissingException # Problem with the session occurred package RWDE::Web::SessionMissingException; use base qw(RWDE::BaseException); 1; ## @class RWDE::StatusException # Problem with instance status package RWDE::StatusException; use base qw(RWDE::BaseException); 1; ## @class RWDE::DatabaseErrorException # Internal db problem detected package RWDE::DatabaseErrorException; use base qw(RWDE::BaseException); 1; ## @class RWDE::PolicyException # Policy violation occurred package RWDE::PolicyException; use base qw(RWDE::BaseException); 1; ## @class RWDE::PermissionException # Permission violation occurred package RWDE::PermissionException; use base qw(RWDE::BaseException); 1; ## @class RWDE::DefaultException # Default Exception - undefined exceptions are funnelled here package RWDE::DefaultException; use base qw(RWDE::BaseException); 1;