Derick Rethans schreef:
On Thu, 10 Jul 2008, Gergely Hodicska wrote:

exceptions thrown during autoload are ignored.
And one more thing, this is in the manual:
"Note: Exceptions thrown in __autoload function cannot be caught in the catch
block and results in a fatal error."

I think your explanation makes much more clear what happens, maybe it would
worth to upgrade the manual. While the quoted text suggests that that if throw
an exception I just can't catch it and will bubble up to top level and this
cause the fatal error.

You can actually catch it *in* the autoload method, it just wouldn't bubble out of it.

the manual could do with that tidbit, maybe also the hack for 'getting the
exception out' of __autoload() ...

        function __autoload($class)
        {
                try {
                        throw new Exception('foo');
                } catch (Exception $e) {                                
                    self::handleDebug($e);
                
                    if (!class_exists($class, false))
                        eval(sprintf('
                    class %1$s
                    {
                        public         function __construct()        { throw new 
AL_Exception("Class %1$s not found: %2$s"); }
                        public         function __call($m, $a)       { throw new 
AL_Exception("Class %1$s not found: %2$s"); }
                        public  static function __callStatic($m, $a) { throw new 
AL_Exception("Class %1$s not found: %2$s"); }
                    }', $class, $e->__toString()));                  
                }
        }

which works best when __autoload() isn't triggered by class_exists("Foo", true)



regards,
Derick



--
PHP Internals - PHP Runtime Development Mailing List
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to