annotate variant_effect_predictor/Bio/Root/Exception.pm @ 3:d30fa12e4cc5 default tip

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