package RWDE::Exceptions; use vars qw($VERSION); $VERSION = sprintf "%d", q$Revision: 515 $ =~ /(\d+)/; =pod =head1 RWDE::Exceptions Exception container file, contains definitions for RWDE Exceptions System defined exceptions are based off of the default behaviour of this base exception class =cut =head1 Exception class definitions for RWDE =cut =head2 RWDE::BaseException() =cut package RWDE::BaseException; use strict; use warnings; use RWDE::DB::DbRegistry; use base qw(Error); use overload ('""' => 'stringify'); =head2 new() Override for the "new" method in the Error base class, initializes the instance the way we want. This will return an initialized instance of Error =cut 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; } =head2 is_retry() Determine whether this was a retry attempt =cut sub is_retry { my ($self) = @_; return $self->{'-value'} =~ m/retry/ig; } 1; =head1 Exception class definitions for RWDE =cut =head2 RWDE::DevelException() Caught with RWDE::DevelException - developer only exceptions, typically for unplanned behaviour =cut package RWDE::DevelException; use base qw(RWDE::BaseException); 1; =head2 RWDE::DataMissingException() caught with RWDE::DataMissingException - missing data detected =cut package RWDE::DataMissingException; use base qw(RWDE::BaseException); 1; =head2 RWDE::DataBadException() Caught with RWDE::DataBadException - Invalid data detected =cut package RWDE::DataBadException; use base qw(RWDE::BaseException); 1; =head2 RWDE::DataLimitException() Caught with RWDE::DataLimitException - Limit or threshold exceeded =cut package RWDE::DataLimitException; use base qw(RWDE::BaseException); 1; =head2 RWDE::DataDuplicateException() Caught with RWDE::DataDuplicateException - Discovered duplicate data (typically db related) =cut package RWDE::DataDuplicateException; use base qw(RWDE::BaseException); 1; =head2 RWDE::DataNotFoundException() Caught with RWDE::DataNotFoundException - Expected data does not exist =cut package RWDE::DataNotFoundException; use base qw(RWDE::BaseException); 1; =head2 RWDE::BadPasswordException() Caught with RWDE::BadPasswordException - Problems accepting a password =cut package RWDE::BadPasswordException; use base qw(RWDE::BaseException); 1; =head2 RWDE::SSLException() Caught with RWDE::SSLException - Problems with http SSL connections =cut package RWDE::SSLException; use base qw(RWDE::BaseException); 1; =head2 RWDE::Web::SessionMissingException() Caught with RWDE::Web::SessionMissingException - Problem with the session occurred =cut package RWDE::Web::SessionMissingException; use base qw(RWDE::BaseException); 1; =head2 RWDE::StatusException() Caught with RWDE::StatusException - Problem with instance status =cut package RWDE::StatusException; use base qw(RWDE::BaseException); 1; =head2 RWDE::DatabaseErrorException() Caught with RWDE::DatabaseErrorException - Internal db problem detected =cut package RWDE::DatabaseErrorException; use base qw(RWDE::BaseException); 1; =head2 RWDE::PolicyException() Caught with RWDE::PolicyException - Policy violation occurred =cut package RWDE::PolicyException; use base qw(RWDE::BaseException); 1; =head2 RWDE::PermissionException() Caught with RWDE::PermissionException - Permission violation occurred =cut package RWDE::PermissionException; use base qw(RWDE::BaseException); 1; =head2 RWDE::DefaultException() Caught with RWDE::DefaultException - Default Exception - undefined exceptions are funnelled here =cut package RWDE::DefaultException; use base qw(RWDE::BaseException); 1;