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