Edit report at http://bugs.php.net/bug.php?id=51463&edit=1
ID: 51463 Comment by: tyra3l at gmail dot com Reported by: tyra3l at gmail dot com Summary: ErrorException thrown from error_handler not catchable in exception handler Status: Re-Opened Type: Bug Package: Scripting Engine problem Operating System: Windows Xp Sp3, Debian Lenny PHP Version: 5.3.2 New Comment: obviously. closures was added with php 5.3 http://php.net/manual/en/functions.anonymous.php Tyrael Previous Comments: ------------------------------------------------------------------------ [2010-05-05 20:15:14] whatrevolution at yahoo dot com OP's test code, result: ( ! ) Parse error: syntax error, unexpected T_FUNCTION, expecting ')' in /var/www/php_bugs/exception_in_error_handler.php on line 13 PHP Version 5.2.10-2ubuntu6.4 System Linux 2.6.31-20-generic x86_64 Build Date Jan 6 2010 22:36:47 Server API Apache 2.0 Handler PHP API 20041225 PHP Extension 20060613 Zend Extension 220060519 Debug Build no Thread Safety disabled Zend Memory Manager enabled Apache/2.2.12 (Ubuntu) ------------------------------------------------------------------------ [2010-04-02 15:19:15] tyra3l at gmail dot com Another weird thing that I observed: If I try to handle the fatal error from register shutdown function then the error_get_last() will return NULL if I throw the ErrorException from the error handler. If I don't try to convert exceptions from errors, then the error_get_last() will return the fatal error in the shutdown function. Or if I generate fatal error for example with new NonExistentClassName; then the error_handler doesn't get called (because this is a fatal error), but the shutdown function gets the fatal error with error_get_last() So it seems that there is some strange magic with this situation. Tyrael ------------------------------------------------------------------------ [2010-04-02 13:41:02] tyra3l at gmail dot com But the exception handler should be called after the error handler and before accessing the empty property which gives the fatal error, isn't it? I mean at first the interpreter tries to access the variable named $foo, then generates a E_NOTICE which is trapped by the error handler, which trows an Exception which never catched at all. ------------------------------------------------------------------------ [2010-04-02 13:35:54] tyra3l at gmail dot com shit, my mistake, $foo will be empty, so $this->$foo will be generating a fatal error, but before that, generate a warning about $foo is empty. :/ ------------------------------------------------------------------------ [2010-04-02 13:33:40] tyra3l at gmail dot com On Lenny I was testing with the dotdeb.org 5.3.2 deb, on windows this is the TS VC9 build ------------------------------------------------------------------------ The remainder of the comments for this report are too long. To view the rest of the comments, please view the bug report online at http://bugs.php.net/bug.php?id=51463 -- Edit this bug report at http://bugs.php.net/bug.php?id=51463&edit=1