[Bioperl-l] Bio::Root::RootI->throw($msg,$class) overloading?

Chris Fields cjfields at uiuc.edu
Tue Jul 11 20:42:35 UTC 2006


Bio::Root::Root doesn't overload throw_not_implemented from
Bio::Root::RootI; from the comments looks like Steve C and Ewan B couldn't
work out some of the Error.pm issues.

Judging by the POD for Bio::Root::RootI, throw_not_implemented doesn't
accept arguments; it throws a Bio::Root::NotImplemented exception
automatically.

Chris

> -----Original Message-----
> From: bioperl-l-bounces at lists.open-bio.org [mailto:bioperl-l-
> bounces at lists.open-bio.org] On Behalf Of Rutger Vos
> Sent: Tuesday, July 11, 2006 1:58 PM
> To: Chris Fields
> Cc: 'Bioperl List'
> Subject: Re: [Bioperl-l] Bio::Root::RootI->throw($msg,$class) overloading?
> 
> I must have overlooked this. I think it does what I want. So could I do
> something like:
> 
> $obj->thow_not_implemented( -class => 'Bio::Root::NotImplemented' );
> 
> ...in interfaces?
> 
> Chris Fields wrote:
> > 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
> >
> >
> >
> > _______________________________________________
> > Bioperl-l mailing list
> > Bioperl-l at lists.open-bio.org
> > http://lists.open-bio.org/mailman/listinfo/bioperl-l
> >
> >
> >
> >
> 
> --
> ++++++++++++++++++++++++++++++++++++++++++++++++++++
> 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




More information about the Bioperl-l mailing list