For Programmers: Free Programming Magazines  


Home > Archive > PHP Documentation > August 2005 > #33598 [Opn->Csd]: Throwing exception from __destruct causes fatal error









You are viewing an archived Text-only version of the thread. To view this thread in it's original format and/or if you want to reply to this thread please [click here]

 

Author #33598 [Opn->Csd]: Throwing exception from __destruct causes fatal error
vrana@php.net

2005-08-29, 6:56 pm

ID: 33598
Updated by: vrana@php.net
Reported By: carlo dot razzeto at mtginfo dot com
-Status: Open
+Status: Closed
Bug Type: Documentation problem
Operating System: *
PHP Version: 5CVS-2005-08-03
New Comment:

This bug has been fixed in the documentation's XML sources. Since the
online and downloadable versions of the documentation need some time
to get updated, we would like to ask you to be a bit patient.

Thank you for the report, and for helping us make our documentation
better.

"Attempting to throw an exception from a desctructor causes a fatal
error."


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

[2005-08-22 17:54:08] sniper@php.net

Throwing exceptions in __desctruct() is not allowed.
Should be documented..


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

[2005-07-07 01:46:59] carlo dot razzeto at mtginfo dot com

Description:
------------
When performing an operation which throws an exception in the
__destruct method of a class, the following Error is generated

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

I have only observed this happening when an object goes out of scope
because the script has ended. Rather than generating a scripting engine
error, PHP should allow for the script to deal with the error, for
instance when an exception handler has been specified by the script.

Reproduce code:
---------------
class test {
function __construct() {
echo "Construct\n";
}

function greet() {
echo "Hello World\n";
}

function __destruct() {
echo "Destruct\n";
throw new Exception( 'test' );
}
}

$test = new test();
$test->greet();

Expected result:
----------------
Construct
Hello World
Destruct

Fatal error: Uncaught exception 'Exception' with message 'test' in
/home/crazzeto/test.php:13
Stack trace:
#0 /home/crazzeto/test.php(13): test::__destruct()
#1 /home/crazzeto/test.php(20): test::__destruct()
#2 /home/crazzeto/test.php(20): unknown()
#3 {main}
thrown in /home/crazzeto/test.php on line 13


Actual result:
--------------
[crazzeto@DEVEL crazzeto]$ php test.php
Construct
Hello World
Destruct

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



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


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







Also available: Server administration forum archive | Web Design forum archive | Software forum archive | Hardware reviews archive

Copyright 2008 codecomments.com