annotate variant_effect_predictor/Bio/Root/Err.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 # PACKAGE : Bio::Root::Err.pm
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
3 # AUTHOR : Steve Chervitz (sac@bioperl.org)
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
4 # CREATED : 22 July 1996
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
5 # REVISION: $Id: Err.pm,v 1.15 2002/10/22 07:38:37 lapp Exp $
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
6 # STATUS : Alpha
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
7 #
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
8 # For documentation, run this module through pod2html
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
9 # (preferably from Perl v5.004 or better).
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
10 #
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
11 # Copyright (c) 1996-8 Steve Chervitz. All Rights Reserved.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
12 # This module is free software; you can redistribute it and/or
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
13 # modify it under the same terms as Perl itself.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
14 # Retain this notice and note any modifications made.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
15 #-----------------------------------------------------------------------------
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
16
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
17 package Bio::Root::Err;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
18 use strict;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
19
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
20 use Bio::Root::Global qw(:devel $CGI);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
21 use Bio::Root::Vector ();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
22 use Bio::Root::Object;# qw(:std);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
23 use Exporter ();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
24
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
25 use vars qw(@ISA @EXPORT @EXPORT_OK %EXPORT_TAGS);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
26 @ISA = qw( Bio::Root::Object Bio::Root::Vector Exporter );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
27 @EXPORT = qw();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
28 @EXPORT_OK = qw( %ERR_FIELDS @ERR_TYPES &format_stack_entry &throw &warning);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
29 %EXPORT_TAGS = (
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
30 data => [qw(%ERR_FIELDS @ERR_TYPES)],
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
31 std => [qw(&throw &warning)]
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
32 );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
33
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
34 use vars qw($ID $VERSION);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
35 $ID = 'Bio::Root::Err';
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
36 $VERSION = 0.041;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
37
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
38 %Bio::Root::Err::ERR_FIELDS = (TYPE=>1, MSG=>1, NOTE=>1, CONTEXT=>1,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
39 TECH=>1, STACK=>1 );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
40
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
41 @Bio::Root::Err::ERR_TYPES = qw(WARNING EXCEPTION FATAL);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
42
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
43
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
44 ## MAIN POD DOCUMENTATION:
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
45
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
46 =head1 NAME
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
47
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
48 Bio::Root::Err - Exception class for Perl 5 objects
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
49
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
50 =head1 SYNOPSIS
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
51
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
52 =head2 Object Creation
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
53
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
54 B<Bio::Root::Object.pm> is a wrapper for Bio::Root::Err.pm objects so clients
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
55 do not have to create these objects directly. Please see
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
56 B<Bio::Root::Object::throw()> as well as L<_initialize>()
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
57 for a more complete treatment
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
58 of how to create Bio::Root::Err.pm objects.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
59
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
60 use Bio::Root::Err;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
61
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
62 $err = Bio::Root::Err->new(-MSG =>"Bad data: $data",
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
63 -STACK =>[\caller(0), \caller(1), ...],
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
64 );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
65
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
66
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
67 To use the L<throw>() method directly:
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
68
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
69 use Bio::Root::Err (:std);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
70
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
71 throw( $object_ref, 'Error message', 'additional note', 'technical note');
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
72
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
73 The C<$object_ref> argument should be a reference to a Bio::Root::Object.pm.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
74
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
75 See also L<the USAGE section | USAGE>.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
76
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
77 =head1 INSTALLATION
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
78
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
79 This module is included with the central Bioperl distribution:
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
80
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
81 http://bio.perl.org/Core/Latest
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
82 ftp://bio.perl.org/pub/DIST
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
83
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
84 Follow the installation instructions included in the INSTALL file.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
85
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
86 =head1 DESCRIPTION
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
87
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
88 A Bio::Root::Err.pm object encapsulates data and methods that facilitate
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
89 working with errors and exceptional conditions that arise in Perl objects.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
90 There are no biological semantics in this module, as one may suspect from its
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
91 location in the Bio:: hierarchy. The location of this module serves to
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
92 separate it from the namespaces of other Perl Error modules. It also makes it
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
93 convenient for use by Bio:: objects.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
94
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
95 The motivation for having an error object is to allow
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
96 Perl 5 objects to deal with errors or exceptional conditions that
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
97 can arise during their construction or manipulation. For example:
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
98
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
99 (1) A complex object can break in many ways.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
100 (2) Tracking errors within a set of nested objects can be difficult.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
101 (3) The way an error is reported should be context-sensitive:
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
102 a web-user needs different information than does the
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
103 software engineer.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
104
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
105 Bio::Root::Err.pm, along with B<Bio::Root::Object.pm>, attempt to make such
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
106 problems tractable. Please see the L<Bio::Root::Object> documentation for more
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
107 about my error handling philosophy.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
108
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
109 A B<Bio::Root::Err.pm> object is an example of a Vector-Object: This module
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
110 inherits both from B<Bio::Root::Object.pm> and B<Bio::Root::Vector.pm>. This
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
111 permits a single Err object to exist within a linked list of Err objects OR
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
112 alone. See the L<Bio::Root::Vector> documentation for more about Vector-Objects.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
113
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
114 B<The API for this module is not complete since the module is under development.>
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
115
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
116 =head2 Other Exception Strategies
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
117
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
118 Exception handling with Perl 5 objects is currently not as evolved as one
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
119 would like. The error handling used by B<Bio::Root::Object.pm> and Bio::Root::Err.pm
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
120 relies on Perl's built-in error/exception handling with eval/die,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
121 which is not very object-aware. What I've attempted to do with these
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
122 modules is to make eval/die more object-savvy, as well as make Perl 5
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
123 objects more eval/die-savvy (but the current strategy is basically a hack).
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
124
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
125 It would be great if Perl could throw an object reference with die().
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
126 This would permit more intelligent and easy to write exception handlers.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
127 For now the Err.pm object is reconstructed from the output of L<string>().
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
128
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
129 There are some other third-party Exception classes such as
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
130 Torsten Ekedahl's B<Experimental::Exception.pm> or Ken Steven's Throwable.pm or
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
131 Graham Barr's Error.pm (see L<Other Exception Modules>). These modules
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
132 attempt to introduce a traditional "try-catch-throw" exception handling mechanism
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
133 into Perl. Future version of my modules (and perhaps Perl itself) may utilize one
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
134 of these.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
135
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
136 =head1 USAGE
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
137
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
138 A demo script that illustrates working with Bio::Root::Err objects is
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
139 examples/root_object/error.pl.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
140
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
141
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
142 =head1 DEPENDENCIES
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
143
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
144 Bio::Root::Err.pm inherits from B<Bio::Root::Object.pm> and B<Bio::Root::Vector.pm>.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
145
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
146
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
147 =head1 FEEDBACK
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
148
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
149 =head2 Mailing Lists
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
150
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
151 User feedback is an integral part of the evolution of this and other Bioperl modules.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
152 Send your comments and suggestions preferably to one of the Bioperl mailing lists.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
153 Your participation is much appreciated.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
154
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
155 bioperl-l@bioperl.org - General discussion
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
156 http://bioperl.org/MailList.shtml - About the mailing lists
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
157
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
158 =head2 Reporting Bugs
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
159
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
160 Report bugs to the Bioperl bug tracking system to help us keep track the bugs and
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
161 their resolution. Bug reports can be submitted via email or the web:
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
162
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
163 bioperl-bugs@bio.perl.org
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
164 http://bugzilla.bioperl.org/
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
165
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
166 =head1 AUTHOR Steve Chervitz
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
167
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
168 Email sac@bioperl.org
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
169
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
170 See L<the FEEDBACK section | FEEDBACK> section for where to send bug reports and comments.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
171
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
172 =head1 VERSION
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
173
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
174 Bio::Root::Err.pm, 0.041
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
175
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
176
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
177 =head1 SEE ALSO
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
178
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
179 Bio::Root::Object.pm - Core object
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
180 Bio::Root::Vector.pm - Vector object
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
181 Bio::Root::Global.pm - Manages global variables/constants
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
182
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
183 http://bio.perl.org/Projects/modules.html - Online module documentation
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
184 http://bio.perl.org/ - Bioperl Project Homepage
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
185
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
186 =head2 Other Exception Modules
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
187
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
188 Experimental::Exception.pm - ftp://ftp.matematik.su.se/pub/teke/
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
189 Error.pm - http://www.cpan.org/authors/id/GBARR/
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
190 Throwable.pm - mailto:kstevens@globeandmail.ca
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
191
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
192 http://genome-www.stanford.edu/perlOOP/exceptions.html
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
193
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
194 =head1 ACKNOWLEDGEMENTS
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
195
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
196 This module was developed under the auspices of the Saccharomyces Genome
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
197 Database:
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
198 http://genome-www.stanford.edu/Saccharomyces
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
199
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
200 Other Bioperl developers contributed ideas including Ewan Birney, Ian Korf,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
201 Chris Dagdigian, Georg Fuellen, and Steven Brenner.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
202
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
203 =head1 COPYRIGHT
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
204
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
205 Copyright (c) 1996-8 Steve Chervitz. All Rights Reserved.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
206 This module is free software; you can redistribute it and/or
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
207 modify it under the same terms as Perl itself.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
208
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
209 =head1 TODO
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
210
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
211 =over 2
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
212
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
213 =item * Improve documentation.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
214
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
215 =item * Experiment with other Exception modules.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
216
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
217 =back
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
218
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
219 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
220
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
221 ## END MAIN POD DOCUMENTATION'
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
222
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
223 =head1 APPENDIX
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
224
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
225 Methods beginning with a leading underscore are considered private
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
226 and are intended for internal use by this module. They are
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
227 B<not> considered part of the public interface and are described here
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
228 for documentation purposes only.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
229
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
230 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
231
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
232
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
233 ########################################################
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
234 # CONSTRUCTOR #
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
235 ########################################################
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
236
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
237
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
238 =head2 _initialize
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
239
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
240 Usage : n/a; automatically called by Bio::Root::Object::new()
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
241 Purpose : Initializes key Bio::Root::Err.pm data.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
242 Returns : String (the -MAKE constructor option.)
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
243 Argument : Named parameters passed from new()
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
244 : (PARAMETER TAGS CAN BE UPPER OR LOWER CASE).
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
245 : -MSG => basic description of the exception.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
246 : -NOTE => additional note to indicate cause of exception
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
247 : or provide information about how to fix/report it
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
248 : -TECH => addition note with technical information
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
249 : of interest to developer.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
250 : -STACK => array reference containing caller() data
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
251 : -TYPE => string, one of @Bio::Root::Err::ERR_TYPES
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
252 : (default = exception).
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
253 : -CONTEXT => array reference
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
254 : -OBJ => Err object to be cloned.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
255
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
256 See Also : B<Bio::Root::Object::_set_err()>
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
257
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
258 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
259
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
260 #----------------
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
261 sub _initialize {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
262 #----------------
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
263 my( $self, @param ) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
264
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
265 my $make = $self->Bio::Root::Object::_initialize( @param );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
266
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
267 my( $msg, $note, $tech, $stack, $type, $context, $obj) =
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
268 $self->_rearrange([qw(MSG NOTE TECH STACK TYPE CONTEXT OBJ)], @param);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
269
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
270 ## NOTE: Don't eval {} the construction process for Err objects.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
271
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
272 if($make =~ /clone/i) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
273 $self->_set_clone($obj);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
274 } else {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
275 if(!$self->_build_from_string($msg, $note, $tech)) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
276 # print "Failed to rebuild: msg = $msg";<STDIN>;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
277 $self->set('msg', $msg );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
278 $self->_set_type( $type );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
279 $self->_set_context($context);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
280 $self->_set_list_data('note', $note );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
281 $self->_set_list_data('tech', $tech );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
282 $self->_set_list_data('stack', $stack );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
283 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
284 $self->set_display();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
285 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
286
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
287 $DEBUG and do{ print STDERR "---> Initialized Err (${\ref($self)}).\n\n";
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
288 # $self->print();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
289 };
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
290 $make;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
291 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
292
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
293 ##
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
294 ## Destructor: Not needed currently. Perhaps if and when Vector is used by delegation.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
295 ##
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
296
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
297 #####################################################################################
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
298 ## ACCESSORS ##
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
299 #####################################################################################
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
300
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
301
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
302
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
303 =head2 _set_clone
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
304
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
305 Usage : n/a; internal method used by _initialize()
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
306 Purpose : Copy all Bio::Root::Err.pm data members into a new object reference.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
307 Argument : object ref for object to be cloned.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
308 Comments : Does not cloning the vector since this method is
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
309 : typically used to extract a single Err object from its vector.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
310
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
311 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
312
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
313 #---------------
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
314 sub _set_clone {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
315 #---------------
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
316 my($self, $obj) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
317
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
318 ref($obj) || throw($self, "Can't clone $ID object: Not an object ref ($obj)");
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
319
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
320 $self->{'_type'} = $obj->{'_type'};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
321 $self->{'_msg'} = $obj->{'_msg'};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
322 $self->{'_note'} = $obj->{'_note'};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
323 $self->{'_tech'} = $obj->{'_tech'};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
324 $self->{'_stack'} = $obj->{'_stack'};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
325 $self->{'_context'} = $obj->{'_context'};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
326 # $self->clone_vector($obj);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
327 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
328
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
329
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
330 =head2 _build_from_string
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
331
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
332 Usage : n/a; called by _initialize()
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
333 Purpose : Re-create an Err.pm object from a string containing Err data.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
334 Returns : boolean, (was the Err.pm object rebuilt?)
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
335 Argument : message, note, tech passed from _initialize()
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
336 : The message is examined to see if it contains a stringified error.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
337
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
338 See Also : L<_initialize>(), L<string>(), L<_has_err>()
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
339
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
340 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
341
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
342 #----------------------
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
343 sub _build_from_string {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
344 #----------------------
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
345 my ($self, $msg, $note, $tech) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
346 my @list = split "\n", $msg;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
347 my ($mode,$line);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
348 my $rebuilt = 0;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
349
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
350 # print "$ID: Attempting to build from string: $msg";<STDIN>;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
351
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
352 MEMBER:
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
353 foreach $line (@list) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
354 if($line =~ /^-+$/) { last MEMBER; }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
355 if($line =~ /^-+ (\w+) -+$/) { $self->{'_type'} = $1; $rebuilt = 1; next MEMBER; }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
356 if($line =~ /^MSG: *(\w.*)/) { my $msg = $1;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
357 if($self->_has_err($msg)) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
358 die "Duplicate error.";
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
359 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
360 $self->{'_msg'} = $msg;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
361 $mode = 'msg';
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
362 next MEMBER; }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
363 if($line =~ /^CONTEXT: *(\w.*)/) { push @{$self->{'_context'}}, $1; $mode = 'context'; next MEMBER; }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
364 if($line =~ /^NOTE: *(\w.*)/) { push @{$self->{'_note'}}, $1; $mode = 'note'; next MEMBER; }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
365 if($line =~ /^TECH: *(\w.*)/) { push @{$self->{'_tech'}}, $1; $mode = 'tech'; next MEMBER; }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
366 if($line =~ /^STACK:/) { $mode = 'stack'; next MEMBER; }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
367 next MEMBER if !$mode;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
368 SWITCH: {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
369 local $_ = $mode;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
370 m/msg/ && do{ $self->{'_msg'} .= "$line\n"; last SWITCH; };
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
371 m/note/ && do{ push @{$self->{'_note'}}, $line; last SWITCH; };
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
372 m/context/ && do{ push @{$self->{'_context'}}, $line; last SWITCH; };
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
373 m/tech/ && do{ push @{$self->{'_tech'}}, $line; last SWITCH; };
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
374 m/stack/ && do{ push @{$self->{'_stack'}}, $line; last SWITCH; };
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
375 next MEMBER;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
376 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
377 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
378 if($rebuilt) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
379 ## Optionally add additional notes.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
380 $self->_set_list_data('note', $note) if defined $note;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
381 $self->_set_list_data('tech', $tech) if defined $tech;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
382 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
383
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
384 $rebuilt;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
385 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
386
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
387
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
388 =head2 _has_err
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
389
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
390 Usage : n/a; internal method called by _build_from_string()
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
391 Purpose : Deterimine if an Err has already been set to prevent duplicate Errs.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
392 Returns : boolean
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
393
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
394 See Also : L<_build_from_string>()
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
395
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
396 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
397
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
398 #-------------
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
399 sub _has_err {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
400 #-------------
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
401 my ($self, $msg) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
402
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
403 $msg =~ s/^\s+//;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
404 $msg =~ s/\s+$//;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
405
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
406 my $err = $self->first;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
407 my ($existing_msg);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
408 do {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
409 # print "checking err object $self\n";
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
410 $existing_msg = $err->msg;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
411 $existing_msg =~ s/^\s+//;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
412 $existing_msg =~ s/\s+$//;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
413 # print " msg: $existing_msg";<STDIN>;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
414 return 1 if $existing_msg eq $msg;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
415
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
416 } while($err = $err->next);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
417
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
418 0;
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 _set_type
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
423
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
424 Usage : n/a; internal method
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
425 Purpose : Sets the type of Err (warning, exception, fatal)
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
426 : Called by _initialize()
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
427 Argument : string
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
428
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
429 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
430
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
431 #----------------
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
432 sub _set_type {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
433 #----------------
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
434 my( $self, $data ) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
435 $data ||= 'EXCEPTION';
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
436
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
437 # printf "\n$ID: Setting type (%s) for err = %s\n", $data, $self->msg;<STDIN>;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
438
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
439 my (@type);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
440 if( @type = grep /$data/i, @Bio::Root::Err::ERR_TYPES ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
441 $self->{'_type'} = $type[0];
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
442 } else {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
443 $self->{'_type'} = 'EXCEPTION';
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
444 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
445
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
446 # print "type = $self->{'_type'} for $self";<STDIN>;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
447 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
448
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
449
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
450
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
451 =head2 _set_list_data
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
452
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
453 Usage : n/a; internal method used by set().
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
454 : $err->_set_list_data( $member, $data);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
455 Purpose : For data members which are anonymous arrays: note, tech, stack,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
456 : adds the given data to the list.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
457 Arguments : $member = any of qw(note tech stack)
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
458 : $data = string
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
459 Comments : Splits $data on tab. Each item
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
460 : of the split is a new entry.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
461 : To clobber the current data (unusual situation), you must first
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
462 : call set() with no data then call again with desired data.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
463
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
464 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
465
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
466 #-------------------
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
467 sub _set_list_data {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
468 #-------------------
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
469 my( $self, $member, $data ) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
470
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
471 # Sensitive to data member name changes.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
472 $member = "_\l$member";
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
473
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
474 # $DEBUG && do {printf STDERR "\n$ID: Setting \"%s\" list data (%s)\n", $member, $data;<STDIN>; };
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
475
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
476 defined $self->{$member} and return $self->_add_list_data( $member, $data );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
477
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
478 if( $data ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
479 $self->{$member} = [];
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
480 if( $member =~ /stack/) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
481 foreach (@$data) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
482 push @{ $self->{$member}}, format_stack_entry(@$_);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
483 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
484 } else {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
485 my @entries = split "\t", $data;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
486 foreach (@entries) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
487 next if /^$/;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
488 # $DEBUG && do {print STDERR "adding $member: $_";<STDIN>;};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
489 push @{ $self->{$member}}, $_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
490 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
491 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
492 } else {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
493 $self->{$member} = undef;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
494 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
495 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
496
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
497
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
498 =head2 _set_context
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
499
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
500 Usage : n/a; internal method used by set().
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
501 Purpose : Sets the object containment context for the exception.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
502 : (this is the hierarchy of objects in which the
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
503 : exception occurred.)
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
504
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
505 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
506
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
507 #------------------
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
508 sub _set_context {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
509 #------------------
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
510 my($self, $aref) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
511
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
512 eval {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
513 if (!ref $aref) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
514 # push @{$aref}, sprintf "object %s \"%s\"",ref($self->parent), $self->parent->name;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
515 push @{$aref}, "UNKNOWN CONTEXT";
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
516 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
517 };
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
518 if($@) { push @{$aref}, 'undefined object'; }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
519
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
520 if($self->type eq 'EXCEPTION') {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
521 $aref->[0] = "Exception thrown by \l$aref->[0]";
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
522 } else {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
523 $aref->[0] = "Error in \l$aref->[0]";
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
524 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
525
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
526 my $script = ($0 =~ /([\w\/\.]+)/, $1);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
527 push @$aref, "SCRIPT: $script";
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
528
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
529 $self->{'_context'} = $aref;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
530
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
531 # print "$ID: _set_context():\n";
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
532 # foreach(@$aref) { print " $_\n"; }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
533 # <STDIN>;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
534 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
535
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
536
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
537
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
538 =head2 set
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
539
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
540 Usage : $err->set( $member, $data );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
541 Purpose : General accessor for setting any Err.pm data member.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
542 Example : $err->set('note', 'this is an additional note.');
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
543 Returns : n/a
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
544 Argument : $member = string, any of qw(msg type note tech stack)
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
545 : $data = string
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
546 Throws : n/a
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
547 Comments : Note, tech, and stack items are appended to any existing
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
548 : notes, tech notes, and stack.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
549 : There should be no need to mess with the stack.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
550
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
551 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
552
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
553 #---------
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
554 sub set {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
555 #---------
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
556 my( $self, $member, $data ) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
557
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
558 local $_ = "\u$member";
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
559 SWITCH: {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
560 /msg/i && do{ $self->{'_msg'} = (defined $data ? $data : 'Unknown error'); last SWITCH; };
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
561 /type/i && do{ $self->_set_type( $data ); last SWITCH; };
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
562 /note|tech|stack/i && do{ $self->_set_list_data( $member, $data); last SWITCH};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
563 warn "\n*** Invalid or unspecified Err data member: $member\n\n";
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
564 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
565 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
566
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
567
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
568 =head2 msg
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
569
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
570 Usage : $message = $err->msg;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
571 Purpose : Get the main message associated with the exception.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
572 Returns : String
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
573 Argument : optional string to be used as a delimiter.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
574
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
575 See Also : L<get>(), L<string>()
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
576
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
577 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
578
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
579
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
580 #-------
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
581 sub msg { my($self,$delimiter) = @_; $self->get('msg',$delimiter); }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
582 #-------
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
583
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
584
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
585 =head2 type
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
586
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
587 Usage : $type = $err->type;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
588 Purpose : Get the type of Err (warning, exception, fatal)
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
589 Returns : String
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
590 Argument : optional string to be used as a delimiter.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
591
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
592 See Also : L<get>(), L<string>()
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
593
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
594 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
595
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
596 #--------
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
597 sub type { my($self,$delimiter) = @_; $self->get('type',$delimiter); }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
598 #--------
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
599
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
600
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
601 =head2 note
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
602
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
603 Usage : $note = $err->note;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
604 : $note = $err->note('<P>');
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
605 Purpose : Get any general note associated with the exception.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
606 Returns : String
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
607 Argument : optional string to be used as a delimiter.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
608
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
609 See Also : L<get>(), L<string>()
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
610
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
611 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
612
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
613 #---------
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
614 sub note { my($self,$delimiter) = @_; $self->get('note',$delimiter); }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
615 #---------
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
616
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
617
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
618 =head2 tech
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
619
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
620 Usage : $tech = $err->tech;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
621 : $tech = $err->tech('<P>');
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
622 Purpose : Get any technical note associate with the exception.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
623 Returns : String
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
624 Argument : optional string to be used as a delimiter.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
625
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
626 See Also : L<get>(), L<string>()
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
627
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
628 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
629
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
630 #------------
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
631 sub tech { my($self,$delimiter) = @_; $self->get('tech',$delimiter); }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
632 #------------
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
633
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
634
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
635
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
636 =head2 stack
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
637
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
638 Usage : $stack = $err->stack;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
639 : $stack = $err->stack('<P>');
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
640 Purpose : Get the call stack for the exception.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
641 Returns : String
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
642 Argument : optional string to be used as a delimiter.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
643
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
644 See Also : L<get>(), L<string>()
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
645
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
646 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
647
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
648 #----------
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
649 sub stack { my($self,$delimiter) = @_; $self->get('stack',$delimiter); }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
650 #----------
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
651
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
652
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
653
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
654 =head2 context
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
655
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
656 Usage : $context = $err->context;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
657 : $context = $err->context('<P>');
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
658 Purpose : Get the containment context of the object which generated the exception.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
659 Returns : String
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
660 Argument : optional string to be used as a delimiter.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
661
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
662 See Also : L<get>(), L<string>()
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
663
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
664 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
665
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
666 #------------
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
667 sub context { my($self,$delimiter) = @_; $self->get('context',$delimiter); }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
668 #------------
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
669
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
670
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
671
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
672 =head2 get
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
673
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
674 Usage : $err->get($member, $delimiter);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
675 Purpose : Get specific data from the Err.pm object.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
676 Returns : String in scalar context.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
677 : Array in list context.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
678 Argument : $member = any of qw(msg type note tech stack context) or combination.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
679 : $delimiter = optional string to be used as a delimiter
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
680 : between member data.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
681
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
682 See Also : L<string>(), L<msg>(), L<note>(), L<tech>(), L<type>(), L<context>(), L<stack>()
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
683
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
684 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
685
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
686 #---------
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
687 sub get {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
688 #---------
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
689 my( $self, $member, $delimiter ) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
690
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
691 my $outer_delim = $delimiter || "\n";
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
692 # my $outer_delim = ($CGI ? "\n<P>" : $delimiter); ## Subtle bug here.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
693
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
694 my (@out);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
695 local $_ = $member;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
696 SWITCH: {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
697 /type/i && do{ push (@out, $self->{'_type'},$outer_delim) };
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
698 # /msg/i && do{ print "getting msg";<STDIN>; push (@out, (defined $self->{'_msg'} ? $self->{'_msg'} : ''),$outer_delim); print "msg: @out<---";<STDIN>; };
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
699 /msg/i && do{ push (@out, (defined $self->{'_msg'} ? $self->{'_msg'} : ''),$outer_delim); };
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
700 /note/i && do{ push (@out, $self->_get_list_data('note', $delimiter ),$outer_delim) };
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
701 /tech/i && do{ push (@out, $self->_get_list_data('tech', $delimiter ),$outer_delim) };
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
702 /stack/i && do{ push (@out, $self->_get_list_data('stack', $delimiter ),$outer_delim) };
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
703 /context/i && do{ push (@out, $self->_get_list_data('context', $delimiter ),$outer_delim) };
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
704
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
705 ## CAN'T USE THE FOLLOWING FORM SINCE IT FAILS WHEN $member EQUALS 'msgnote'.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
706 # /note|tech|stack/ && do{ push @out, $self->_get_list_data( $_, $delimiter ); };
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
707
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
708 last SWITCH;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
709 $self->warn("Invalid or undefined Err data member ($member).");
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
710 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
711 # $DEBUG && do{ print STDERR "OUTER DELIM = $outer_delim \nOUT: \n @out <---";<STDIN>;};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
712 wantarray ? @out : join('',@out);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
713 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
714
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
715
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
716
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
717 =head2 _get_list_data
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
718
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
719 Usage : n/a; internal method used by get()
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
720 Purpose : Gets data for members which are list refs (note, tech, stack, context)
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
721 Returns : Array
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
722 Argument : ($member, $delimiter)
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
723
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
724 See Also : L<get>()
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
725
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
726 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
727
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
728 #-------------------
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
729 sub _get_list_data {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
730 #-------------------
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
731 my( $self, $member, $delimiter ) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
732 $delimiter ||= "\t";
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
733 # Sensitive to data member name changes.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
734 $member = "_\l$member";
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
735 return if !defined $self->{$member};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
736 join( $delimiter, @{$self->{$member}} );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
737 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
738
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
739
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
740
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
741 =head2 get_all
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
742
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
743 Usage : (same as get())
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
744 Purpose : Get specific data from all errors in an Err.pm object.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
745 Returns : Array in list context.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
746 : String in scalar context.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
747 Argument : (same as get())
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
748
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
749 See Also : L<get>()
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
750
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
751 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
752
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
753 #------------
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
754 sub get_all {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
755 #------------
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
756 my( $self, $member, $delimiter ) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
757
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
758 if( $self->size() == 1) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
759 return $self->get( $member, $delimiter);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
760 } else {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
761 my $err = $self;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
762
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
763 ### Return data from multiple errors in a list.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
764 if(wantarray) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
765 my @out;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
766 do{ push @out, $err->get( $member);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
767 } while($err = $err->prev());
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
768 return @out;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
769
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
770 } else {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
771 ### Return data from multiple errors in a string with each error's data
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
772 ### bracketed by a "Error #n\n" line and two delimiters.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
773 my $out = '';
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
774 if($err->size() == 1) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
775 $out = $err->get( $member, $delimiter);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
776 } else {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
777 do{ #$out .= "Error #${\$err->rank()}$delimiter";
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
778 $out .= $err->get( $member, $delimiter);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
779 $out .= $delimiter.$delimiter;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
780 } while($err = $err->prev());
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
781 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
782 return $out;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
783 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
784 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
785 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
786
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
787 #####################################################################################
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
788 ## INSTANCE METHODS ##
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
789 #####################################################################################
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
790
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
791
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
792 =head2 _add_note
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
793
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
794 Usage : n/a; internal method called by _add_list_data()
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
795 Purpose : adds a new note.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
796
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
797 See Also : L<_add_list_data>()
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
798
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
799 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
800
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
801 #---------------
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
802 sub _add_note {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
803 #---------------
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
804 my( $self, $data ) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
805
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
806 if( defined $self->{'_note'} ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
807 push @{ $self->{'_note'}}, $data;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
808 } else {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
809 $self->_set_list_data('note', $data );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
810 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
811 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
812
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
813 #----------------------------------------------------------------------
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
814 =head2 _add_tech()
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
815
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
816 Usage : n/a; internal method called by _add_list_data()
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
817 Purpose : adds a new technical note.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
818
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
819 See Also : L<_add_list_data>()
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
820
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
821 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
822
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
823 #-------------
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
824 sub _add_tech {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
825 #-------------
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
826 my( $self, $data ) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
827
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
828 if( defined $self->{'_tech'} ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
829 push @{ $self->{'_tech'}}, $data;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
830 } else {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
831 $self->_set_list_data('Tech', $data );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
832 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
833 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
834
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
835
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
836 =head2 _add_list_data
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
837
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
838 Usage : n/a; called by _set_list_data()
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
839 Purpose : adds a new note or tech note.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
840
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
841 See Also : L<_set_list_data>()
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
842
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
843 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
844
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
845 #--------------------
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
846 sub _add_list_data {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
847 #--------------------
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
848 my( $self, $member, $data ) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
849
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
850 local $_ = $member;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
851 SWITCH: {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
852 /note/i && do{ $self->_add_note( $data ); };
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
853 /tech/i && do{ $self->_add_tech( $data ); };
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
854 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
855 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
856
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
857
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
858
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
859 =head2 print
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
860
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
861 Usage : $err->print;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
862 Purpose : Prints Err data to STDOUT or a FileHandle.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
863 Returns : Call to print
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
864 Argument : Named parameters for string()
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
865 Comments : Uses string() to get data.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
866
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
867 See Also : L<string>()
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
868
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
869 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
870
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
871 #-----------
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
872 sub print {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
873 #-----------
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
874 my( $self, %param ) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
875 # my $OUT = $self->parent->fh();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
876 # print $OUT $self->string(%param);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
877 print $self->string(%param);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
878 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
879
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
880
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
881 =head2 string
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
882
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
883 Usage : $err->string( %named_parameters);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
884 Purpose : Stringify the data contained in the Err.pm object.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
885 Example : print STDERR $err->string;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
886 Returns : String
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
887 Argument : Named parameters (optional) passed to
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
888 : Bio::Root::IOManager::set_display().
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
889
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
890 See Also : L<print>(), L<_build_from_string>(), B<Bio::Root::IOManager::set_display()>
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
891
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
892 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
893
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
894 #-----------
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
895 sub string {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
896 #-----------
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
897 my( $self, @param ) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
898
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
899 my %param = @param;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
900 $self->set_display( @param );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
901 my $show = $self->show;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
902 my $out = $param{-BEEP} ? "\a" : '';
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
903
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
904 my $err = $param{-CURRENT} ? $self->last : $self->first;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
905
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
906 # my $err1 = $err;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
907 # my $errL = $self->last;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
908 # print "\n\nERR 1: ${\$err1->msg}";
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
909 # print "\nERR L: ${\$errL->msg}";<STDIN>;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
910
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
911 my $numerate = $err->size() >1;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
912 my $count = 0;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
913 my ($title);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
914 my $hasnote = defined $self->{'_note'};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
915 my $hastech = defined $self->{'_tech'};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
916
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
917 while (ref $err) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
918 $count++;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
919 # $out .= sprintf "\nERROR #%d:", $count;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
920
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
921 if(not $title = $err->{'_type'}) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
922 $err = $err->next();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
923 next;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
924 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
925 if( $numerate) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
926 ## The rank data is a bit screwy at present.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
927 $out .= sprintf "\n%s %s %s\n", '-'x 20, $title,'-'x 20;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
928 } else {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
929 $out .= sprintf "\n%s %s %s\n", '-'x20, $title,'-'x20;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
930 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
931 $show =~ /msg|default/i and $out .= "MSG: " . $err->msg("\n");
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
932 $show =~ /note|default/i and $hasnote and $out .= "NOTE: ".$err->note("\n");
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
933 $show =~ /tech|default/i and $hastech and $out .= "TECH: ".$err->tech("\n");
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
934 $show =~ /context|default/i and $out .= "CONTEXT: ".$err->context("\n");
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
935 $show =~ /stack|default/i and $out .= "STACK: \n".$err->stack("\n");
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
936 $out .= sprintf "%s%s%s\n",'-'x 20, '-'x (length($title)+2), '-'x 20;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
937
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
938 # print "$ID: string: cumulative err:\n$out\n";<STDIN>;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
939
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
940 $err = $err->next();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
941 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
942
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
943 $out;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
944 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
945
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
946
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
947
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
948 =head2 is_fatal
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
949
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
950 Usage : $err->is_fatal;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
951 Purpose : Determine if the error is of type 'FATAL'
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
952 Returns : Boolean
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
953 Status : Experimental, Deprecated
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
954
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
955 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
956
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
957 #--------------
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
958 sub is_fatal { my $self = shift; $self->{'_type'} eq 'FATAL'; }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
959 #--------------
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
960
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
961 #####################################################################################
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
962 ## CLASS METHODS ##
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
963 #####################################################################################
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
964
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
965
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
966 =head2 throw
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
967
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
968 Usage : throw($object, [message], [note], [technical note]);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
969 : This method is exported.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
970 Purpose : Class method version of Bio::Root::Object::throw().
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
971 Returns : die()s with the contents of the Err object in a string.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
972 : If the global strictness is less than -1, die is not called and
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
973 : the error is printed to STDERR.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
974 Argument : [0] = object throwing the error.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
975 : [1] = optional message about the error.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
976 : [2] = optional note about the error.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
977 : [3] = optional technical note about the error.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
978 Comments : The glogal verbosity level is not used. For verbosity-sensitive
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
979 : behavior, use Bio::Root::Object::throw().
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
980 Status : Experimental
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
981 : This method is an alternative to Bio::Root::Object::throw()
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
982 : and is not as well developed or documented as that method.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
983
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
984 See Also : L<warning>(), B<Bio::Root::Object::throw()> B<Bio::Root::Global::strictness>()
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
985
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
986 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
987
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
988 #----------
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
989 sub throw {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
990 #----------
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
991 my($obj, @param) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
992
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
993 # print "Throwing exception for object ${\ref $self} \"${\$self->name}\"\n";
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
994 my $err = new Bio::Root::Err(
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
995 -MSG =>$param[0],
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
996 -NOTE =>$param[1],
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
997 -TECH =>$param[2],
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
998 -STACK =>scalar(Bio::Root::Object::stack_trace($obj,2)),
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
999 -CONTEXT =>Bio::Root::Object::containment($obj),
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1000 -TYPE =>'EXCEPTION',
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1001 # -PARENT =>$obj,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1002 );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1003
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1004 if(strictness() < -1) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1005 print STDERR $err->string(-BEEP=>1) unless verbosity() < 0;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1006 } else {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1007 die $err->string;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1008 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1009
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1010 0;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1011 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1012
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1013
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1014 =head2 warning
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1015
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1016 Usage : warning($object, [message], [note], [technical note]);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1017 : This method is exported.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1018 Purpose : Class method version of Bio::Root::Object::warn().
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1019 Returns : Prints the contents of the error to STDERR and returns false (0).
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1020 : If the global strictness() is > 1, warn() calls are converted
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1021 : into throw() calls.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1022 Argument : [0] = object producing the warning.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1023 : [1] = optional message about the error.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1024 : [2] = optional note about the error.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1025 : [3] = optional technical note about the error.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1026 :
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1027 Comments : The glogal verbosity level is not used. For verbosity-sensitive
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1028 : behavior, use Bio::Root::Object::warn().
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1029 Status : Experimental
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1030 : This method is an alternative to Bio::Root::Object::warn()
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1031 : and is not as well developed or documented as that method.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1032
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1033 See Also : L<throw>, B<Bio::Root::Object::warn()>, B<Bio::Root::Global::strictness()>
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1034
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1035 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1036
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1037 #-----------
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1038 sub warning {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1039 #-----------
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1040 my($obj, @param) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1041
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1042 # print "Throwing exception for object ${\ref $self} \"${\$self->name}\"\n";
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1043 my $err = new Bio::Root::Err(
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1044 -MSG =>$param[0],
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1045 -NOTE =>$param[1],
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1046 -TECH =>$param[2],
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1047 -STACK =>scalar(Bio::Root::Object::stack_trace($obj,2)),
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1048 -CONTEXT =>Bio::Root::Object::containment($obj),
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1049 -TYPE =>'WARNING',
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1050 # -PARENT =>$obj,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1051 );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1052
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1053 if(strictness() > 1) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1054 die $err->string;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1055
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1056 } else {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1057 print STDERR $err->string(-BEEP=>1) unless $DONT_WARN;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1058 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1059
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1060 0;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1061 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1062
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1063
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1064 =head2 format_stack_entry
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1065
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1066 Usage : &format_stack_entry(<class>,<file>,<line>,<class_method>,<has_args>,<wantarray>)
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1067 : This function is exported.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1068 Purpose : Creates a single stack entry given a caller() list.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1069 Argument : List of scalars (output of the caller() method).
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1070 Returns : String = class_method($line)
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1071 : e.g., Bio::Root::Object::name(1234)
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1072
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1073 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1074
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1075 #------------------------
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1076 sub format_stack_entry {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1077 #------------------------
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1078 my( $class, $file, $line, $classmethod, $hasargs, $wantarray) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1079
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1080 # if($DEBUG) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1081 # print STDERR "format_stack_entry data:\n";
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1082 # foreach(@_) {print STDERR "$_\n"; } <STDIN>;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1083 # }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1084
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1085 $classmethod ||= 'unknown class/method';
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1086 $line ||= 'unknown line';
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1087 return "$classmethod($line)";
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1088 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1089
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1090 1;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1091 __END__
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1092
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1093 #####################################################################################
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1094 # END OF CLASS #
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1095 #####################################################################################
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1096
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1097 =head1 FOR DEVELOPERS ONLY
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1098
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1099 =head2 Data Members
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1100
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1101 Information about the various data members of this module is provided for those
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1102 wishing to modify or understand the code. Two things to bear in mind:
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1103
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1104 =over 4
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1105
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1106 =item 1 Do NOT rely on these in any code outside of this module.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1107
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1108 All data members are prefixed with an underscore to signify that they are private.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1109 Always use accessor methods. If the accessor doesn't exist or is inadequate,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1110 create or modify an accessor (and let me know, too!).
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1111
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1112 =item 2 This documentation may be incomplete and out of date.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1113
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1114 It is easy for this documentation to become obsolete as this module is still evolving.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1115 Always double check this info and search for members not described here.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1116
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1117 =back
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1118
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1119 An instance of Bio::Root::Err.pm is a blessed reference to a hash containing
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1120 all or some of the following fields:
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1121
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1122 FIELD VALUE
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1123 ------------------------------------------------------------------------
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1124 _type fatal | warning | exception (one of @Bio::Root::Err::ERR_TYPES).
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1125
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1126 _msg Terse description: Main cause of error.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1127
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1128 _note List reference. Verbose description: probable cause & troubleshooting for user.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1129
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1130 _tech List reference. Technical notes of interest to programmer.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1131
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1132 _stack List reference. Stack trace: list of "class::method(line number)" strings.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1133
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1134
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1135
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1136 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1137
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1138 1;