[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index][Thread Index][Top&Search][Original]
RE: A common base exception object for Perl - RFC
These don't seem like problems that you need to solve in the 'Exception'
class. Let the author of a meaningful subclass worry about
internationalization when writing 'to_string'.
Inventing a second-tier of "categories" when you can just use inheritance
structure, and the addition of "special" methods seems needless & confusing.
Why say
$@->isa('PerlError' <mailto:$@->isa('PerlError'> ) and
$@->CriticalError <mailto:$@->critical_error>
instead of
$@->isa('CriticalError' <mailto:$@->isa('CriticalError'> )
?
-----Original Message-----
From: Pete Jordan [mailto:pjordan1@email.mot.com]
Sent: Friday, January 21, 2000 6:00 AM
To: Perl5 Porters
Subject: Re: A common base exception object for Perl
- RFC
Larry Wall wrote:
> I think Perl should move toward making die always throw an
exception
> object of some sort, even if the user thinks they're only
throwing a
> string. I think you should be able to say $@->name or
whatever without
> testing $@ first to see if it's a ref (unless you're
trying to be
> backward compatible).
Yes. As noted elsewhere, that's the only reason I use
C<$SIG{__DIE__}>.
> So to partially answer your question, I don't want people
inventing new
> syntax merely because die/eval was historically only used
to throw
> string exceptions.
Agreed. Code of the C<{try {} except {}> persuasion is
really just
syntactic sugar; it's neater and more readable than using
ordinary
conditionals after an C<eval>, but it's not exactly
essential. One for
Perl6 perhaps.
> More important to me, however, is the notion of
classifying all the
> current internal exceptions so that we can trap them by
name or by
> type without relying on the English prose. I think this
is important
> not so much for OO reasons, but for i18n reasons. Given
that we're
> extending internal exceptions to do this, I don't see any
reason why
> the same capability shouldn't be provided for user-thrown
exceptions.
I like this - locale-specific error text with standard error
names and
categories would be an excellent idea. Larry, what's your
take on
exception categories? The alternatives seem to be using an
exception
property or the subclass name... I started by favouring the
former,
moved to the latter after discussion here, but if Perl
itself is likely
to define categories for standard errors, perhaps a property
would be
less hassle after all.
> What I *don't* want is for every program to have to pull
in a 17,000 line
> StandardExceptions module. This has to be lightweight on
the front end.
Well, quite. Raising exceptions isn't an issue - the object
can be
created on the fly in context. For querying standard
exceptions (say
grabbing a locale-specific error text from an error code),
there may be
no alternative to your 17,000 line module.
OTOH, if this were done properly, there would be a lookup
table used at
runtime for all internal errors... It could be built-in at
compile time
if a fixed locale for a given Perl installation is
acceptable, otherwise
we're talking about some sort of error database. Aaargh. I
suppose
configure could allow the selection of one or more locales
all of which
would be built into Perl... Dunno.
Pete
--
use Disclaimer::Standard;
my $phone='+44 1793 564450'; # "THIS IS THE COMPATIBILITY
my $fax='+44 1793 566918'; # POLICE. RESTORE YOUR
ORIGINAL
my $mobile='+44 7973 725120'; # TOKE.C AND BACK AWAY
SLOWLY."
[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index][Thread Index][Top&Search][Original]