Edit report at http://bugs.php.net/bug.php?id=51463&edit=1

 ID:                 51463
 User updated 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
+Status:             Closed
 Type:               Bug
 Package:            Scripting Engine problem
 Operating System:   Windows Xp Sp3, Debian Lenny
 PHP Version:        5.3.2
 Block user comment: N
 Private report:     N

 New Comment:

I will try to reproduce the problem with a more clean test script, and
create a new issue for that.



Tyrael


Previous Comments:
------------------------------------------------------------------------
[2010-05-05 21:24:40] tyra3l at gmail dot com

obviously.

closures was added with php 5.3

http://php.net/manual/en/functions.anonymous.php



Tyrael

------------------------------------------------------------------------
[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.
:/

------------------------------------------------------------------------


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