#33598 [Opn->Csd]: Throwing exception from __destruct causes fatal error

From: Date: Mon, 29 Aug 2005 15:59:04 +0000
Subject: #33598 [Opn->Csd]: Throwing exception from __destruct causes fatal error
References: 1  Groups: php.doc 
Request: Send a blank email to phpdoc+get-969369757@lists.php.net to get a copy of this message
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

« previous php.doc (#969369757) next »