Re: Re: [ZEND-ENGINE-CVS] cvs: ZendEngine2 / zend_default_classes.c zend_default_classes.h zend_execute.h zend_execute_API.c
| From: | Sterling Hughes | Date: | Fri, 13 Feb 2004 17:54:29 +0000 |
| Subject: | Re: Re: [ZEND-ENGINE-CVS] cvs: ZendEngine2 / zend_default_classes.c zend_default_classes.h zend_execute.h zend_execute_API.c | ||
| References: | 1 | Groups: | php.internals |
| Request: | Send a blank email to internals+get-7815@lists.php.net to get a copy of this message | ||
>
> The reasoning is that it allows users to do a catch-all (which otherwise
> we'd add to the language syntax). It also adds cleanliness to the Exception
> hierarchy and allows PHP code to interact with PHP code which isn't written
> by the developer knowing that there's a common interface (such as
> getMessage()) which the exception always adheres to. That improves the
> ability of exception handling especially debugging and logging
> significantly.
>
That second part is a Throwable interface, not a base class (and
Exception isn't even an ABC.)
> i.e.
>
> try {
> ...// Main code which calls PEAR, SOAP, Smart, external stuff and
> so on....
> } catch (Exception $e) {
> print "Damn something is really wrong here\n";
> print $e->getMessage();
> }
>
I get the concept, that's the reason Exception was added. But its meant
to be a voluntary thing (I believe this has been discussed before btw),
a standard class that gives users something to build upon, should they
want to. I think an all-your-base-is-belonging-to-Exception is the
wrong way to go. If you really want a catch-all or some type of
consistency the way to go is either a Throwable interface (which makes
it more of a pain to write exceptions) or the generic:
catch ($e) {
}
syntax.
_Sterling
--
"Reductionists like to take things apart. The rest of us are
just trying to get it together."
- Larry Wall, Programming Perl, 3rd Edition