[Bioperl-l] Bio::Root::RootI->throw($msg,$class) overloading?
Chris Fields
cjfields at uiuc.edu
Tue Jul 11 13:13:23 UTC 2006
I suppose you could; Bio::Root::Root does that using Error.pm (if it
is installed). It almost sounds like what Bio::Root::Root does is
what you want, but you want a little more information when exceptions
are thrown maybe?
from perldoc Bio::Root::Root:
...
# Alternatively, using the new typed exception syntax in
the throw() call:
$obj->throw( -class => 'Bio::Root::BadParameter',
-text => "Can not open file $file",
-value => $file);
...
Typed Exception Syntax
The typed exception syntax of throw() has the advantage of
plainly
indicating the nature of the trouble, since the name of the
class is
included in the title of the exception output.
To take advantage of this capability, you must specify
arguments as
named parameters in the throw() call. Here are the parameters:
-class
name of the class of the exception. This should be one
of the
classes defined in Bio::Root::Exception, or a custom
error of yours
that extends one of the exceptions defined in
Bio::Root::Exception.
-text
a sensible message for the exception
-value
the value causing the exception or $!, if appropriate.
Note that Bio::Root::Exception does not need to be imported
into your
module (or script) namespace in order to throw exceptions via
Bio::Root::Root::throw(), since Bio::Root::Root imports it.
Chris
On Jul 11, 2006, at 3:58 AM, Rutger Vos wrote:
> Dear all,
>
> would it be possible to overload Bio::Root::RootI's 'throw' method to
> accept an additional, optional (positional) argument to define the
> exception class, e.g. using Exception::Class:
>
> # ...somewhere ...
>
> sub makefh {
> my ( $self, $filename ) = @_;
> open my $fh, '<' $filename or $self->throw("Can't open file: $!",
> 'Bio::Exceptions::FileIO'); # NOTE second argument
> return $fh;
> }
>
> #.... somewhere else
> my $fh;
> eval {
> $fh = $obj->makefh( 'data.txt');
> }
> if ( $@ and $@->isa('Bio::Exceptions::FileIO') ) {
> # something's wrong with the file?
> }
>
> --
> ++++++++++++++++++++++++++++++++++++++++++++++++++++
> Rutger Vos, PhD. candidate
> Department of Biological Sciences
> Simon Fraser University
> 8888 University Drive
> Burnaby, BC, V5A1S6
> Phone: 604-291-5625
> Fax: 604-291-3496
> Personal site: http://www.sfu.ca/~rvosa
> FAB* lab: http://www.sfu.ca/~fabstar
> Bio::Phylo: http://search.cpan.org/~rvosa/Bio-Phylo/
> ++++++++++++++++++++++++++++++++++++++++++++++++++++
>
>
> _______________________________________________
> Bioperl-l mailing list
> Bioperl-l at lists.open-bio.org
> http://lists.open-bio.org/mailman/listinfo/bioperl-l
Christopher Fields
Postdoctoral Researcher
Lab of Dr. Robert Switzer
Dept of Biochemistry
University of Illinois Urbana-Champaign
More information about the Bioperl-l
mailing list