annotate variant_effect_predictor/Bio/Root/Exception.pm @ 0:2bc9b66ada89 draft default tip

Uploaded
author mahtabm
date Thu, 11 Apr 2013 06:29:17 -0400
parents
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1 #-----------------------------------------------------------------
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2 # $Id: Exception.pm,v 1.14 2002/06/29 00:42:17 sac Exp $
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
3 #
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
4 # BioPerl module Bio::Root::Exception
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
5 #
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
6 # Cared for by Steve Chervitz <sac@bioperl.org>
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
7 #
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
8 # You may distribute this module under the same terms as perl itself
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
9 #-----------------------------------------------------------------
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
10
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
11 =head1 NAME
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
12
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
13 Bio::Root::Exception - Generic exception objects for Bioperl
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
14
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
15 =head1 SYNOPSIS
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
16
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
17 =head2 Throwing exceptions using B<Error::throw()>:
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
18
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
19 use Bio::Root::Exception;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
20 use Error;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
21
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
22 # Set Error::Debug to include stack trace data in the error messages
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
23 $Error::Debug = 1;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
24
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
25 $file = shift;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
26 open (IN, $file) ||
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
27 throw Bio::Root::FileOpenException ( "Can't open file $file for reading", $!);
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
28
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
29 =head2 Throwing exceptions using B<Bio::Root::Root::throw()>:
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
30
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
31 # Here we have an object that ISA Bio::Root::Root, so it inherits throw().
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
32
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
33 open (IN, $file) ||
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
34 $object->throw(-class => 'Bio::Root::FileOpenException',
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
35 -text => "Can't open file $file for reading",
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
36 -value => $!);
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
37
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
38 =head2 Catching and handling exceptions using B<Error::try()>:
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
39
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
40 use Bio::Root::Exception;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
41 use Error qw(:try);
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
42
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
43 # Note that we need to import the 'try' tag from Error.pm
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
44
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
45 # Set Error::Debug to include stack trace data in the error messages
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
46 $Error::Debug = 1;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
47
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
48 $file = shift;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
49 try {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
50 open (IN, $file) ||
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
51 throw Bio::Root::FileOpenException ( "Can't open file $file for reading", $!);
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
52 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
53 catch Bio::Root::FileOpenException with {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
54 my $err = shift;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
55 print STDERR "Using default input file: $default_file\n";
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
56 open (IN, $default_file) || die "Can't open $default_file";
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
57 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
58 otherwise {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
59 my $err = shift;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
60 print STDERR "An unexpected exception occurred: \n$err";
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
61
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
62 # By placing an the error object reference within double quotes,
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
63 # you're invoking its stringify() method.
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
64 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
65 finally {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
66 # Any code that you want to execute regardless of whether or not
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
67 # an exception occurred.
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
68 };
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
69 # the ending semicolon is essential!
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
70
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
71
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
72 =head2 Defining a new Exception type as a subclass of Bio::Root::Exception:
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
73
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
74 @Bio::TestException::ISA = qw( Bio::Root::Exception );
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
75
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
76
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
77 =head1 DESCRIPTION
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
78
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
79 =head2 Exceptions defined in B<Bio::Root::Exception>
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
80
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
81 These are generic exceptions for typical problem situations that could arise
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
82 in any module or script.
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
83
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
84 =over 8
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
85
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
86 =item Bio::Root::Exception()
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
87
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
88 =item Bio::Root::NotImplemented()
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
89
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
90 =item Bio::Root::IOException()
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
91
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
92 =item Bio::Root::FileOpenException()
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
93
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
94 =item Bio::Root::SystemException()
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
95
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
96 =item Bio::Root::BadParameter()
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
97
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
98 =item Bio::Root::OutOfRange()
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
99
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
100 =item Bio::Root::NoSuchThing()
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
101
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
102 =back
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
103
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
104 Using defined exception classes like these is a good idea because it
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
105 indicates the basic nature of what went wrong in a convenient,
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
106 computable way.
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
107
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
108 If there is a type of exception that you want to throw
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
109 that is not covered by the classes listed above, it is easy to define
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
110 a new one that fits your needs. Just write a line like the following
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
111 in your module or script where you want to use it (or put it somewhere
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
112 that is accessible to your code):
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
113
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
114 @NoCanDoException::ISA = qw( Bio::Root::Exception );
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
115
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
116 All of the exceptions defined in this module inherit from a common
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
117 base class exception, Bio::Root::Exception. This allows a user to
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
118 write a handler for all Bioperl-derived exceptions as follows:
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
119
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
120 use Bio::Whatever;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
121 use Error qw(:try);
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
122
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
123 try {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
124 # some code that depends on Bioperl
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
125 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
126 catch Bio::Root::Exception with {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
127 my $err = shift;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
128 print "A Bioperl exception occurred:\n$err\n";
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
129 };
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
130
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
131 So if you do create your own exceptions, just be sure they inherit
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
132 from Bio::Root::Exception directly, or indirectly by inheriting from a
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
133 Bio::Root::Exception subclass.
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
134
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
135 The exceptions in Bio::Root::Exception are extensions of Graham Barr's
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
136 B<Error.pm> module available from CPAN. Despite this dependency, the
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
137 Bio::Root::Exception module does not explicitly C<require Error>.
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
138 This permits Bio::Root::Exception to be loaded even when
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
139 Error.pm is not available.
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
140
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
141 =head2 Throwing exceptions within Bioperl modules
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
142
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
143 Error.pm is not part of the Bioperl distibution, and may not be
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
144 present within any given perl installation. So, when you want to
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
145 throw an exception in a Bioperl module, the safe way to throw it
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
146 is to use B<Bio::Root::Root::throw()> which can use Error.pm
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
147 when it's available. See documentation in Bio::Root::Root for details.
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
148
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
149 =head1 SEE ALSO
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
150
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
151 See the C<examples/exceptions> directory of the Bioperl distribution for
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
152 working demo code.
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
153
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
154 B<Bio::Root::Root::throw()> for information about throwing
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
155 Bio::Root::Exception-based exceptions.
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
156
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
157 B<Error.pm> (available from CPAN, author: GBARR)
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
158
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
159 Error.pm is helping to guide the design of exception handling in Perl 6.
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
160 See these RFC's:
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
161
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
162 http://dev.perl.org/rfc/63.pod
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
163
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
164 http://dev.perl.org/rfc/88.pod
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
165
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
166
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
167 =head1 AUTHOR
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
168
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
169 Steve Chervitz E<lt>sac@bioperl.orgE<gt>
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
170
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
171 =head1 COPYRIGHT
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
172
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
173 Copyright (c) 2001 Steve Chervitz. All Rights Reserved.
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
174
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
175 This library is free software; you can redistribute it and/or modify
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
176 it under the same terms as Perl itself.
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
177
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
178 =head1 DISCLAIMER
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
179
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
180 This software is provided "as is" without warranty of any kind.
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
181
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
182 =head1 EXCEPTIONS
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
183
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
184 =cut
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
185
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
186 # Define some generic exceptions.'
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
187
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
188 package Bio::Root::Exception;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
189
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
190 use strict;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
191
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
192 my $debug = $Error::Debug; # Prevents the "used only once" warning.
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
193 my $DEFAULT_VALUE = "__DUMMY__"; # Permits eval{} based handlers to work
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
194
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
195 =head2 B<Bio::Root::Exception>
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
196
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
197 Purpose : A generic base class for all BioPerl exceptions.
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
198 By including a "catch Bio::Root::Exception" block, you
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
199 should be able to trap all BioPerl exceptions.
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
200 Example : throw Bio::Root::Exception("A generic exception", $!);
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
201
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
202 =cut
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
203
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
204 #---------------------------------------------------------
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
205 @Bio::Root::Exception::ISA = qw( Error );
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
206 #---------------------------------------------------------
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
207
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
208 =head2 Methods defined by Bio::Root::Exception
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
209
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
210 =over 4
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
211
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
212 =item B< new() >
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
213
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
214 Purpose : Guarantees that -value is set properly before
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
215 calling Error::new().
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
216
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
217 Arguments: key-value style arguments same as for Error::new()
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
218
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
219 You can also specify plain arguments as ($message, $value)
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
220 where $value is optional.
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
221
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
222 -value, if defined, must be non-zero and not an empty string
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
223 in order for eval{}-based exception handlers to work.
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
224 These require that if($@) evaluates to true, which will not
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
225 be the case if the Error has no value (Error overloads
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
226 numeric operations to the Error::value() method).
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
227
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
228 It is OK to create Bio::Root::Exception objects without
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
229 specifing -value. In this case, an invisible dummy value is used.
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
230
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
231 If you happen to specify a -value of zero (0), it will
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
232 be replaced by the string "The number zero (0)".
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
233
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
234 If you happen to specify a -value of empty string (""), it will
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
235 be replaced by the string "An empty string ("")".
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
236
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
237 =cut
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
238
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
239 sub new {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
240 my ($class, @args) = @_;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
241 my ($value, %params);
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
242 if( @args % 2 == 0 && $args[0] =~ /^-/) {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
243 %params = @args;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
244 $value = $params{'-value'};
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
245 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
246 else {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
247 $params{-text} = $args[0];
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
248 $value = $args[1];
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
249 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
250
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
251 if( defined $value and not $value) {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
252 $value = "The number zero (0)" if $value == 0;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
253 $value = "An empty string (\"\")" if $value eq "";
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
254 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
255 else {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
256 $value ||= $DEFAULT_VALUE;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
257 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
258 $params{-value} = $value;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
259
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
260 my $self = $class->SUPER::new( %params );
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
261 return $self;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
262 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
263
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
264 =item pretty_format()
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
265
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
266 Purpose : Get a nicely formatted string containing information about the
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
267 exception. Format is similar to that produced by
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
268 Bio::Root::Root::throw(), with the addition of the name of
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
269 the exception class in the EXCEPTION line and some other
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
270 data available via the Error object.
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
271 Example : print $error->pretty_format;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
272
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
273 =cut
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
274
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
275 sub pretty_format {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
276 my $self = shift;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
277 my $msg = $self->text;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
278 my $stack = '';
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
279 if( $Error::Debug ) {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
280 $stack = $self->_reformat_stacktrace();
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
281 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
282 my $value_string = $self->value ne $DEFAULT_VALUE ? "VALUE: ".$self->value."\n" : "";
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
283 my $class = ref($self);
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
284
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
285 my $title = "------------- EXCEPTION: $class -------------";
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
286 my $footer = "\n" . '-' x CORE::length($title);
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
287 my $out = "\n$title\n" .
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
288 "MSG: $msg\n". $value_string. $stack. $footer . "\n";
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
289 return $out;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
290 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
291
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
292
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
293 # Reformatting of the stack performed by _reformat_stacktrace:
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
294 # 1. Shift the file:line data in line i to line i+1.
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
295 # 2. change xxx::__ANON__() to "try{} block"
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
296 # 3. skip the "require" and "Error::subs::try" stack entries (boring)
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
297 # This means that the first line in the stack won't have any file:line data
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
298 # But this isn't a big issue since it's for a Bio::Root::-based method
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
299 # that doesn't vary from exception to exception.
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
300
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
301 sub _reformat_stacktrace {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
302 my $self = shift;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
303 my $msg = $self->text;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
304 my $stack = $self->stacktrace();
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
305 $stack =~ s/\Q$msg//;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
306 my @stack = split( /\n/, $stack);
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
307 my @new_stack = ();
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
308 my ($method, $file, $linenum, $prev_file, $prev_linenum);
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
309 my $stack_count = 0;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
310 foreach my $i( 0..$#stack ) {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
311 # print "STACK-ORIG: $stack[$i]\n";
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
312 if( ($stack[$i] =~ /^\s*([^(]+)\s*\(.*\) called at (\S+) line (\d+)/) ||
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
313 ($stack[$i] =~ /^\s*(require 0) called at (\S+) line (\d+)/)) {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
314 ($method, $file, $linenum) = ($1, $2, $3);
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
315 $stack_count++;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
316 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
317 else{
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
318 next;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
319 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
320 if( $stack_count == 1 ) {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
321 push @new_stack, "STACK: $method";
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
322 ($prev_file, $prev_linenum) = ($file, $linenum);
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
323 next;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
324 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
325
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
326 if( $method =~ /__ANON__/ ) {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
327 $method = "try{} block";
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
328 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
329 if( ($method =~ /^require/ and $file =~ /Error\.pm/ ) ||
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
330 ($method =~ /^Error::subs::try/ ) ) {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
331 last;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
332 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
333 push @new_stack, "STACK: $method $prev_file:$prev_linenum";
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
334 ($prev_file, $prev_linenum) = ($file, $linenum);
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
335 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
336 push @new_stack, "STACK: $prev_file:$prev_linenum";
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
337
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
338 return join "\n", @new_stack;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
339 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
340
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
341 =item B< stringify() >
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
342
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
343 Purpose : Overrides Error::stringify() to call pretty_format().
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
344 This is called automatically when an exception object
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
345 is placed between double quotes.
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
346 Example : catch Bio::Root::Exception with {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
347 my $error = shift;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
348 print "$error";
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
349 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
350
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
351 See Also: L<pretty_format()|pretty_format>
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
352
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
353 =cut
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
354
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
355 sub stringify {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
356 my ($self, @args) = @_;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
357 return $self->pretty_format( @args );
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
358 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
359
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
360
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
361
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
362 =back
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
363
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
364 =head1 Subclasses of Bio::Root::Exception
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
365
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
366
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
367 =head2 B<Bio::Root::NotImplemented>
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
368
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
369 Purpose : Indicates that a method has not been implemented.
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
370 Example : throw Bio::Root::NotImplemented(
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
371 -text => "Method \"foo\" not implemented in module FooBar.",
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
372 -value => "foo" );
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
373
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
374 =cut
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
375
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
376 #---------------------------------------------------------
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
377 @Bio::Root::NotImplemented::ISA = qw( Bio::Root::Exception );
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
378 #---------------------------------------------------------
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
379
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
380 =head2 B<Bio::Root::IOException>
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
381
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
382 Purpose : Indicates that some input/output-related trouble has occurred.
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
383 Example : throw Bio::Root::IOException(
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
384 -text => "Can't save data to file $file.",
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
385 -value => $! );
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
386
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
387 =cut
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
388
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
389 #---------------------------------------------------------
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
390 @Bio::Root::IOException::ISA = qw( Bio::Root::Exception );
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
391 #---------------------------------------------------------
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
392
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
393
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
394 =head2 B<Bio::Root::FileOpenException>
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
395
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
396 Purpose : Indicates that a file could not be opened.
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
397 Example : throw Bio::Root::FileOpenException(
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
398 -text => "Can't open file $file for reading.",
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
399 -value => $! );
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
400
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
401 =cut
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
402
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
403 #---------------------------------------------------------
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
404 @Bio::Root::FileOpenException::ISA = qw( Bio::Root::IOException );
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
405 #---------------------------------------------------------
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
406
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
407
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
408 =head2 B<Bio::Root::SystemException>
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
409
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
410 Purpose : Indicates that a system call failed.
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
411 Example : unlink($file) or throw Bio::Root::SystemException(
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
412 -text => "Can't unlink file $file.",
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
413 -value => $! );
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
414
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
415 =cut
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
416
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
417 #---------------------------------------------------------
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
418 @Bio::Root::SystemException::ISA = qw( Bio::Root::Exception );
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
419 #---------------------------------------------------------
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
420
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
421
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
422 =head2 B<Bio::Root::BadParameter>
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
423
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
424 Purpose : Indicates that one or more parameters supplied to a method
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
425 are invalid, unspecified, or conflicting.
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
426 Example : throw Bio::Root::BadParameter(
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
427 -text => "Required parameter \"-foo\" was not specified",
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
428 -value => "-foo" );
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
429
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
430 =cut
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
431
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
432 #---------------------------------------------------------
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
433 @Bio::Root::BadParameter::ISA = qw( Bio::Root::Exception );
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
434 #---------------------------------------------------------
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
435
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
436
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
437 =head2 B<Bio::Root::OutOfRange>
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
438
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
439 Purpose : Indicates that a specified (start,end) range or
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
440 an index to an array is outside the permitted range.
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
441 Example : throw Bio::Root::OutOfRange(
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
442 -text => "Start coordinate ($start) cannot be less than zero.",
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
443 -value => $start );
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
444
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
445 =cut
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
446
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
447 #---------------------------------------------------------
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
448 @Bio::Root::OutOfRange::ISA = qw( Bio::Root::Exception );
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
449 #---------------------------------------------------------
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
450
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
451
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
452 =head2 B<Bio::Root::NoSuchThing>
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
453
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
454 Purpose : Indicates that a requested thing cannot be located
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
455 and therefore could possibly be bogus.
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
456 Example : throw Bio::Root::NoSuchThing(
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
457 -text => "Accession M000001 could not be found.",
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
458 -value => "M000001" );
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
459
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
460 =cut
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
461
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
462 #---------------------------------------------------------
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
463 @Bio::Root::NoSuchThing::ISA = qw( Bio::Root::Exception );
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
464 #---------------------------------------------------------
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
465
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
466
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
467 1;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
468