ID: 33598
Updated by: [EMAIL PROTECTED]
Reported By: carlo dot razzeto at mtginfo dot com
-Status: Verified
+Status: Open
-Bug Type: Class/Object related
+Bug Type: Documentation problem
Operating System: *
PHP Version: 5CVS-2005-08-03
New Comment:
Throwing exceptions in __desctruct() is not allowed.
Should be documented..
Previous Comments:
------------------------------------------------------------------------
[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:
--------------
[EMAIL PROTECTED] 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