3 use base qw( OpenSRF Error );
4 use OpenSRF::Utils::Logger;
6 my $log = "OpenSRF::Utils::Logger";
10 my( $class, $message ) = @_;
11 $class = ref( $class ) || $class;
13 $self->{'msg'} = ${$class . '::ex_msg_header'} .": $message";
14 return bless( $self, $class );
17 sub message() { return $_[0]->{'msg'}; }
24 Top level exception. This class logs an exception when it is thrown. Exception subclasses
25 should subclass one of OpenSRF::EX::INFO, NOTICE, WARN, ERROR, CRITICAL, and PANIC and provide
26 a new() method that takes a message and a message() method that returns that message.
33 throw OpenSRF::EX::Jabber ("I Am Dying");
35 OpenSRF::EX::InvalidArg->throw( "Another way" );
37 my $je = OpenSRF::EX::Jabber->new( "I Cannot Connect" );
41 See OpenSRF/EX.pm for example subclasses.
45 # Log myself and throw myself
47 #sub message() { shift->alert_abstract(); }
49 #sub new() { shift->alert_abstract(); }
55 if( ! ref( $self ) || scalar( @_ ) ) {
56 $self = $self->new( @_ );
59 if( $self->class->isa( "OpenSRF::EX::INFO" ) ||
60 $self->class->isa( "OpenSRF::EX::NOTICE" ) ||
61 $self->class->isa( "OpenSRF::EX::WARN" ) ) {
63 $log->debug( $self->stringify(), $log->DEBUG );
66 else{ $log->debug( $self->stringify(), $log->ERROR ); }
74 my($package, $file, $line) = get_caller();
75 my $name = ref($self);
76 my $msg = $self->message();
78 my ($sec,$min,$hour,$mday,$mon,$year) = localtime();
79 $year += 1900; $mon += 1;
81 '%s-%0.2d-%0.2dT%0.2d:%0.2d:%0.2d',
82 $year, $mon, $mday, $hour, $min, $sec);
84 return "Exception: $name $date $package $file:$line $msg\n";
88 # --- determine the originating caller of this exception
91 my $package = caller();
93 while( $package->isa( "Error" ) || $package =~ /^Error::/ ) {
94 $package = caller( ++$x );
102 # -------------------------------------------------------------------
103 # -------------------------------------------------------------------
105 # Top level exception subclasses defining the different exception
108 # -------------------------------------------------------------------
110 package OpenSRF::EX::INFO;
111 use base qw(OpenSRF::EX);
112 our $ex_msg_header = "System INFO";
114 # -------------------------------------------------------------------
116 package OpenSRF::EX::NOTICE;
117 use base qw(OpenSRF::EX);
118 our $ex_msg_header = "System NOTICE";
120 # -------------------------------------------------------------------
122 package OpenSRF::EX::WARN;
123 use base qw(OpenSRF::EX);
124 our $ex_msg_header = "System WARNING";
126 # -------------------------------------------------------------------
128 package OpenSRF::EX::ERROR;
129 use base qw(OpenSRF::EX);
130 our $ex_msg_header = "System ERROR";
132 # -------------------------------------------------------------------
134 package OpenSRF::EX::CRITICAL;
135 use base qw(OpenSRF::EX);
136 our $ex_msg_header = "System CRITICAL";
138 # -------------------------------------------------------------------
140 package OpenSRF::EX::PANIC;
141 use base qw(OpenSRF::EX);
142 our $ex_msg_header = "System PANIC";
144 # -------------------------------------------------------------------
145 # -------------------------------------------------------------------
147 # Some basic exceptions
149 # -------------------------------------------------------------------
150 package OpenSRF::EX::Jabber;
151 use base 'OpenSRF::EX::ERROR';
152 our $ex_msg_header = "Jabber Exception";
154 package OpenSRF::EX::JabberDisconnected;
155 use base 'OpenSRF::EX::ERROR';
156 our $ex_msg_header = "JabberDisconnected Exception";
158 =head2 OpenSRF::EX::Jabber
160 Thrown when there is a problem using the Jabber service
164 package OpenSRF::EX::Transport;
165 use base 'OpenSRF::EX::ERROR';
166 our $ex_msg_header = "Transport Exception";
170 # -------------------------------------------------------------------
171 package OpenSRF::EX::InvalidArg;
172 use base 'OpenSRF::EX::ERROR';
173 our $ex_msg_header = "Invalid Arg Exception";
175 =head2 OpenSRF::EX::InvalidArg
177 Thrown where an argument to a method was invalid or not provided
182 # -------------------------------------------------------------------
183 package OpenSRF::EX::Socket;
184 use base 'OpenSRF::EX::ERROR';
185 our $ex_msg_header = "Socket Exception";
187 =head2 OpenSRF::EX::Socket
189 Thrown when there is a network layer exception
195 # -------------------------------------------------------------------
196 package OpenSRF::EX::Config;
197 use base 'OpenSRF::EX::PANIC';
198 our $ex_msg_header = "Config Exception";
200 =head2 OpenSRF::EX::Config
202 Thrown when a package requires a config option that it cannot retrieve
203 or the config file itself cannot be loaded
208 # -------------------------------------------------------------------
209 package OpenSRF::EX::User;
210 use base 'OpenSRF::EX::ERROR';
211 our $ex_msg_header = "User Exception";
213 =head2 OpenSRF::EX::User
215 Thrown when an error occurs due to user identification information
219 package OpenSRF::EX::Session;
220 use base 'OpenSRF::EX::ERROR';
221 our $ex_msg_header = "Session Error";