Raw content of BioMart::Exception
# $Id: Exception.pm,v 1.3 2008/04/09 12:52:33 syed Exp $
=head1 NAME
BioMart::Exception - Exceptions thrown by BioMart library modules
=head1 SYNOPSIS
# In library code
use BioMart::Exception;
if('something goes horribly wrong in database-query') {
BioMart::Exception::Database->throw('this query is busted');
}
# In calling code
use BioMart::Exception;
eval{ 'attempt to execute prepared Mart-query' };
my $e;
if($e = Exception::Class->caught('BioMart::Exception::Database')) {
print "caught db-error";
# do something about error, if possible
}
=head1 DESCRIPTION
BioMart::Exception defines in a single module all exceptions thrown by the BioMart
modules. This is done in very few lines of code via the Exception::Class module
(see POD at http://search.cpan.org/~drolsky/Exception-Class/).
Even though the 'automagic' framework is used, one can still do interesting things
like attach filehandles or db-statement handles to the exception before throwing it.
This may make it easier for the calling code to handle the exception.
=head1 AUTHOR - Arek Kasprzyk, Syed Haider, Richard Holland, Damian Smedley, Gudmundur Arni Thorisson
=head1 EXCEPTION CLASSES
=head2 BioMart::Exception::Configuration
Error related to Mart configuration, such as attempts to retrieve a non-existing
filter from a dataset config-tree or adding an undefined filter to a query.
=head2 BioMart::Exception::Database
Error related to a Mart database connection, such as incorrect db-connection
parameters or bad SQL-statement.
=head2 BioMart::Exception::Template
Error related to MartView templating system, such as a syntax error in a template
or other problem relating to processing a template
=cut
package BioMart::Exception;
use Exception::Class (
'BioMart::Exception',
BioMart::Exception::Configuration => {
isa => 'BioMart::Exception',
description => 'Error in BioMart configuration'
},
BioMart::Exception::Template => {
isa => 'BioMart::Exception',
description => 'Error in MartView templating system'
},
BioMart::Exception::Database => {
isa => 'BioMart::Exception',
description => 'Error in BioMart database connection or statement',
fields => ['dbh','sth'],
},
BioMart::Exception::Query => {
isa => 'BioMart::Exception',
description => 'Error in building or executing Mart query',
fields =>['query'],
},
BioMart::Exception::Formatting => {
isa => 'BioMart::Exception',
description => 'Error in output formatting'
},
BioMart::Exception::Session => {
isa => 'BioMart::Exception',
description => 'Error in retrieving or storing a user session'
},
BioMart::Exception::Usage => {
isa => 'BioMart::Exception',
description => 'Error in usage of API'
},
);
Exception::Class::Base->Trace(1);
1;
=head1 BUGS AND LIMITATIONS
There are no known bugs in this module.
Please report problems to BioMart development mailing list ()
Patches are welcome.
=head1 CONTACT
This module is part of the BioMart project http://www.biomart.org
Questions can be posted to the mart-dev mailing list:
mart-dev@ebi.ac.uk
=head1 AUTHOR
Gudmundur A. Thorisson
=head1 LICENCE AND COPYRIGHT
Copyright (c) (). All rights reserved.
This module is free software; you can redistribute it and/or
modify it under the same terms as Perl itself. See L.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
=cut