#47143 [Opn]: Throwing an exception in a destructor causes a fatal error

From: Date: Sun, 18 Jan 2009 08:26:29 +0000
Subject: #47143 [Opn]: Throwing an exception in a destructor causes a fatal error
References: 1  Groups: php.bugs 
Request: Send a blank email to php-bugs+get-132983@lists.php.net to get a copy of this message
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

« previous php.bugs (#132983) next »