Re: exceptions instead of errors
| From: | (Marcus Börger) | Date: | Sun, 04 May 2003 17:21:35 +0000 |
| Subject: | Re: exceptions instead of errors | ||
| References: | 1 | Groups: | php.internals |
| Request: | Send a blank email to internals+get-1218@lists.php.net to get a copy of this message | ||
At 04:32 04.05.2003, Andi Gutmans wrote:
At 02:53 AM 5/4/2003 +0200, Marcus Börger wrote:There will surely no switch, that would be the stuiest thing we cold do.Some help of the engine would be good: - automatically set EH_THROW mode at "try" - automatically set EH_NORMAL mode at "catch" (first outmost catch)Huh? I think it's definitely not obvious that I'd want these to happen automatically. Actually I personally wouldn't, because I'd prefer PHP to continue the way it works and only use exceptions in user-land.If noone objects i will commit this on monday evening.Please don't before this is discussed. We have discussed this kind of thing quite a few times and our opinion was that error handling in PHP shouldn't be changed. We wouldn't want some configuration switch to change how the scripts work nor is it a good idea if the same script behaves differently according to one switch.
Anyway, we can discuss this again but definitely I don't think we should jump the gun with commits in this area until people really think of the whole picture. We have a large user base out there and we still want all of the user-base to "talk" in the same language.Large user base? Who the hell uses ze2 or php5 widely out there? The patch is intended for the new php5/ze2 oo features and will not change any php4 features or its behavior. It simply makes it possible to throw exceptions in ctors (and for that there is now other solution). Everything else the patch offers can surely be discussed: automation with try/catch and so on. What i like would be: 1) procedural (aka php4) no change (aka simply errors as of now) 2) oo (aka new php5/ze2 features) always throw exceptions instead of errors. for example: let's assume we have an extension "example" consisting of a function "example_test", a namespace "example" containing a function "factory" and a class "whatever" with a "whatelse": example_test(); //-> normal operation or error mechanism $obj = example::factory(); // -> object creation or exception $obj = new example::whatever(); // -> object creation or exception $obj->whatelse(); // -> normal operation or exception WHY: becasue this only changes new things we don't have yet and it is easy to learn and deal with: "procedural = errors, oo = exceptions".
I won't really be around for the next two weeks so maybe it's best to wait or in the least make sure Zeev takes part in this discussion.Then i hope you can answer now :-)
Thanks, Andi P.S. -BTW, what does SQLite do?Just as Wez said. And you may take a look at my patches and tests for it on the url i gave. Because this extension lets you test exceptions with ctors and the factory() function. regards marcus