Edit report at http://bugs.php.net/bug.php?id=32100&edit=1
ID: 32100 Comment by: phplasma at gmail dot com Reported by: ceefour at gauldong dot net Summary: Request 'finally' support for exceptions Status: Closed Type: Feature/Change Request Package: Feature/Change Request Operating System: * PHP Version: 5.* Block user comment: N New Comment: A finally block would indeed be useful, please reconsider. Previous Comments: ------------------------------------------------------------------------ [2010-09-07 17:38:51] michael202 at gmx dot de I also think that try-finally is useful. try catch is no elegant replacement. Just needed it today again. finally is more elegant than an other solution. For example: try { lots o' code if a return .. if b exit .. } finally do somethin } Another solution to the "finally" problem is to use goto. Not so elegant but not a bad thing according to Knuth. ------------------------------------------------------------------------ [2010-08-16 12:42:11] torsten dot landmann at bauermedia dot com I also agree: 'finally' is needed. I really don't get why it has been left out. There is no elegant equivalent, especially so since rethrowing the exception alters file and line number saved in the exception, so later it's hard to find out where it originally came from. Please offer "finally". Don't worry, nobody will be forced to use it. I definitely will. thuejk showed very well how 'finally' helps with keeping your code clean. Or vice versa: How the absence of it often causes the need to copy and paste code (which is always a bad development pattern). ------------------------------------------------------------------------ [2010-06-27 00:59:16] thuejk at gmail dot com >We've had long discussions and came to the only conclusion that we don't need that, for more search the mailing list archieves. Where is that discussion? I haven't been able to find it. Only people saying that finally is utterly useless, without showing any signs that they have actually considered finally's uses. As the other comments have said, sometimes some code inside a try will allocate a non-php ressource which need to be deallocated whether or not an exception is thrown. To avoid writing that code twice, you need it in finally. Version without finally: try { allocate non-php resource } catch ($ex) { deallocate non-php resource throw $ex; } deallocate non-php resource Version with finally: try { allocate non-php resource } finally { deallocate non-php resource } The finally code is obviously "better". And it is a completely reasonable way to code. Sure you can emulate finally with more code, but so can a Turin Machine. finally is syntactic sugar which makes it easier to write maintainable programs. ------------------------------------------------------------------------ [2010-06-16 20:54:10] orlandu96 at gmail dot com are there any updates on this issue? ------------------------------------------------------------------------ [2010-03-31 12:40:17] a dot e at inne dot pl Could finally also mean that 'returns' will be executed after the finally block try{ some ifs ... return x ... more ifs ... throw ... return y }catch{ handle exceptions }finally{ No matter if there was exception or not execute this bit before you leave the method. For example if object has some state it might be necessary to make sure its consistent at the end } In the case i have now at work i had to add method call before every return and throw to make sure that my data will be set properly before method ends. Would that be a feature someone might like? thanks art ------------------------------------------------------------------------ The remainder of the comments for this report are too long. To view the rest of the comments, please view the bug report online at http://bugs.php.net/bug.php?id=32100 -- Edit this bug report at http://bugs.php.net/bug.php?id=32100&edit=1