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