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

Reply via email to