Default exception handler

php.internals

(Marcus Börger)

22 years ago
Hello internals, hi Zeev, hi Andi, Currently php doesn't have a default exception handler that gets executed if the thrown excpetion was not caught by any previous handler. I now suggest the following extension: try { // code } catch (class1 $var) { } catch (class2 $var) { } catch ($var) { } Thereby it should only be possible to have an exception handler that does not specify a class as the last one. Since we only allow throwing objects at the moment we know that the caught variable is any object and hence we do not need a syntax like catch (...) provided by C++ for example. An alternative concept would be to allow throwing exception instances only. But inside the C code you could still throw other objects. A patch to enable the new syntax can be found here: http://marcus-boerger.de/php/ext/ze2/ze2-catch-20030905.diff.txt Best regards, Marcus mailto:marcus.boerger@post.rwth-aachen.de

Sebastian Bergmann

22 years ago
Marcus B?rger wrote:
> try { > // code > } > catch (class1 $var) { > } > catch (class2 $var) { > } > catch ($var) { > }
I thought that only objects of the Exception class and subclasses thereof can be throw()n. If that is not the case yet, make it so and try { /* code */ } catch (SomeException $e) {} catch (Exception $e) {} works just fine ;-)
> An alternative concept would be to allow throwing exception instances > only.
See above ;)
-- Sebastian Bergmann http://sebastian-bergmann.de/ http://phpOpenTracker.de/ Das Buch zu PHP 5: http://professionelle-softwareentwicklung-mit-php5.de/

(Marcus Börger)

22 years ago
Hello Marcus, Friday, September 5, 2003, 5:24:21 PM, you wrote:
> Hello internals, hi Zeev, hi Andi,
> A patch to enable the new syntax can be found here: > http://marcus-boerger.de/php/ext/ze2/ze2-catch-20030905.diff.txt
Well, forget about the patch for the moment it doesn't really work :-(
-- Best regards, Marcus mailto:helly@php.net

Andi Gutmans

22 years ago
Hi Marcus, I implemented this functionality about a year ago (if I'm not mistaken it was part of the original ZE2 tree). The reason we removed it (IIRC) was that we thought it would lead to cleaner PHP code and would force only objects being thrown (although this can be done in other ways). I would like to keep things as-is because I think it's cleaner this way. Give the developer the benefit of the tought that he can design his Exception hierarchy in a good way, wether he inherits from our "Exception" class or from his own exception class. Andi

Cristiano Duarte

22 years ago
Hi Andi, IMHO I think there should be a way to catch all kinds of exceptions whether they inherits from "Exception" or not. It's specially important in standalone applications like those in PHP-GTK. An external library can throw an unkown exception an it could terminate the program abnormally. Instead, if we can catch this (at the moment) "unknown exception", maybe it would be possible to recover the program stability. Cristiano Duarte "Andi Gutmans" <andi@zend.com> escreveu na mensagem news:5.1.0.14.2.20030906082904.036cf2d0@127.0.0.1...