#36837 [NEW]: construct, call another classes fn, throw,catch,die. destructor is called
| From: | tz at universale dot hu | Date: | Thu, 23 Mar 2006 19:47:13 +0000 |
| Subject: | #36837 [NEW]: construct, call another classes fn, throw,catch,die. destructor is called | ||
| Groups: | php.bugs | ||
| Request: | Send a blank email to php-bugs+get-94818@lists.php.net to get a copy of this message | ||
From: tz at universale dot hu
Operating system: Windows XP
PHP version: 5.1.2
PHP Bug Type: *General Issues
Bug description: construct, call another classes fn, throw,catch,die. destructor is called
Description:
------------
Normally, if the constructor throws an exception, the destructor is not
called reaching the end of the script.
That's OK
In the code attached, the destructor is called.
There are two important parts of the code:
1. The exception must be generated by an object called from the foo's
constructor.
2. It has to handle this exception, and call 'die'
In this case, the foo-s destructor is called.
Reproduce code:
---------------
class foo {
function __construct(){
new thrower( this );
}
function __destruct(){
sleep( 5 );
}
}
class thrower {
function __construct(){
try {
throw new Exception( "foomessage" );
} catch ( Exception $e ){
die;
}
}
}
$f = new foo();
Expected result:
----------------
the destructor mustn't be called
--
Edit bug report at http://bugs.php.net/?id=36837&edit=1
--
Try a CVS snapshot (PHP 4.4): http://bugs.php.net/fix.php?id=36837&r=trysnapshot44
Try a CVS snapshot (PHP 5.1): http://bugs.php.net/fix.php?id=36837&r=trysnapshot51
Try a CVS snapshot (PHP 6.0): http://bugs.php.net/fix.php?id=36837&r=trysnapshot60
Fixed in CVS: http://bugs.php.net/fix.php?id=36837&r=fixedcvs
Fixed in release: http://bugs.php.net/fix.php?id=36837&r=alreadyfixed
Need backtrace: http://bugs.php.net/fix.php?id=36837&r=needtrace
Need Reproduce Script: http://bugs.php.net/fix.php?id=36837&r=needscript
Try newer version: http://bugs.php.net/fix.php?id=36837&r=oldversion
Not developer issue: http://bugs.php.net/fix.php?id=36837&r=support
Expected behavior: http://bugs.php.net/fix.php?id=36837&r=notwrong
Not enough info: http://bugs.php.net/fix.php?id=36837&r=notenoughinfo
Submitted twice: http://bugs.php.net/fix.php?id=36837&r=submittedtwice
register_globals: http://bugs.php.net/fix.php?id=36837&r=globals
PHP 3 support discontinued: http://bugs.php.net/fix.php?id=36837&r=php3
Daylight Savings: http://bugs.php.net/fix.php?id=36837&r=dst
IIS Stability: http://bugs.php.net/fix.php?id=36837&r=isapi
Install GNU Sed: http://bugs.php.net/fix.php?id=36837&r=gnused
Floating point limitations: http://bugs.php.net/fix.php?id=36837&r=float
No Zend Extensions: http://bugs.php.net/fix.php?id=36837&r=nozend
MySQL Configuration Error: http://bugs.php.net/fix.php?id=36837&r=mysqlcfg