ID:               47143
 User updated by:  felixcca at yahoo dot ca
 Reported By:      felixcca at yahoo dot ca
 Status:           Open
 Bug Type:         Scripting Engine problem
 Operating System: Irrelevant
 PHP Version:      5.2.8
 New Comment:

Sorry, made a mistake on the original error message. It's "Exception 
thrown without a stack frame," as stated below, and not "Exception 
thrown without a stack trace".


Previous Comments:
------------------------------------------------------------------------

[2009-01-18 05:16:31] felixcca at yahoo dot ca

Description:
------------
Basically a duplicate of #31304, but it seems I can't reopen the ticket

myself since I'm not a dev nor the original poster.

When an exception is thrown in a destructor, the exception is lost, and

a pointless Fatal Error is issued:
Fatal Error: Exception thrown without a stack trace

debug_backtrace() will still get you a stack trace from a destructor 
without issuing any error, let alone causing the loss of debugging
data. 
Also, only wrapping the exception in a try-catch inside the destructor

works, and allows you to just print the exception and exit as if 
exceptions really worked in destructors.

Why spit out the Fatal Error?

Reproduce code:
---------------
<?php
class ExceptionThrower
{
        public function __destruct()
        {
                throw new Exception;
        }
}
$obj = new ExceptionThrower;
?>


Expected result:
----------------
Fatal error: Uncaught exception 'Exception' in snippet.php:6
Stack trace:
#0 [internal function]: ExceptionThrower->__destruct()
#1 {main}
  thrown in snippet.php on line 6






Actual result:
--------------
Fatal error: Exception thrown without a stack frame in Unknown on line
0


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


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

Reply via email to