Edit report at https://bugs.php.net/bug.php?id=36779&edit=1

 ID:                 36779
 Comment by:         cmanley at xs4all dot nl
 Reported by:        since71 at gmail dot com
 Summary:            Request 'finally' support for exceptions
 Status:             Open
 Type:               Feature/Change Request
 Package:            Feature/Change Request
 Operating System:   All
 PHP Version:        5.1.2
 Block user comment: N
 Private report:     N

 New Comment:

I agree. Not having "finally" is a language shortcoming.

One example I just ran into that made me cuss at PHP is this. Without finally, 
one cannot use breaks in a try construct as break ends execution of the current 
for, foreach, while, do-while or switch structure.

Code example:

do {
  $lock = new PseudoLock();
  try {
    // do stuff
    if (...) {
      break; // this is a no-no without finally
    }
  }
  catch(Exception $e) {
    $lock = null; // release lock
    throw $e;
  }
  $lock = null; // release lock

  // Do more stuff.

} while (!$satisfied);


Note how the inner break will cause both resource lock release attempts to be 
skipped. If the finally construct existed, the break would first pass through 
the finally where the lock can be released, and then pass out of it's loop 
structure. That's how it works in other languages.


Previous Comments:
------------------------------------------------------------------------
[2006-03-18 03:47:34] since71 at gmail dot com

Description:
------------
A previous thread for a request to add "finally" support for exceptions was 
relatively quickly killed in what seemed, to me, the beginning of a potentially 
useful thread (http://bugs.php.net/bug.php?id=32100) and I would like to 
re-open it. The original requestors comments rings true for many of us 
developing PHP.

FWIW: I heartily agree that "finally" should be implemented in some (hopefully 
near) future version of PHP.



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



-- 
Edit this bug report at https://bugs.php.net/bug.php?id=36779&edit=1

Reply via email to