In many cases this can be done by refactoring to a method:

public function main()
{
  $in = fopen('whatever');
  $this->whereTheStuffWent($in);
  fclose($in);
}

protected function whereTheStuffWent($in)
{
  try {
    // Do stuff that might throw an exception
  } catch (Exception $e)
  {
    // Log it or something
  }
}

The while loop case in https://bugs.php.net/bug.php?id=36779 could be
dealt with by returning a result from whereTheStuffWent and breaking
out if it's set. Not too bad. finally { } might be a little more
convenient than this I suppose:

$finished = $this->whereTheStuffWent($in);
fclose($in);
if ($finished)
{
  break;
}


On Tue, Feb 28, 2012 at 9:25 AM, Paul Dragoonis <dragoo...@gmail.com> wrote:
> Tried to do something the other day and had to write something a bit quirky
> tht would have been super clean with a finally block.
>
> +1000
>
> On Tue, Feb 28, 2012 at 2:22 PM, Kiall Mac Innes <ki...@managedit.ie> wrote:
>
>> +1000
>>
>> This is a feature that I've always wanted in PHP, My main reason being to
>> reduce code duplication. eg
>>
>> try {
>>    $fh = fopen($filename);
>>
>>    // Do some work on the file + encounter an error.
>>    throw new Exception();
>> } catch (Exception $e) {
>>    // Log an error or something
>> } finally {
>>    fclose($fh);
>> }
>>
>> Thanks,
>> Kiall
>>
>>
>> On Tue, Feb 28, 2012 at 2:05 PM, Dmitri Snytkine <
>> dsnytk...@ultralogistics.com> wrote:
>>
>> >
>> > This is another feature that we know we can live without
>> > but those familiar with languages that have 'finally' like Java or Python
>> > know that
>> > it is very neat feature to have in some situations.
>> >
>> > Basically the code inside 'finally' is guaranteed to run even if there
>> is a
>> > 'return' inside try or catch blocks
>> > in which case the value to be returned is remembered tempraraly, the code
>> > inside finally block executes and then remembered value is returned.
>> >
>> >
>> > Dmitri Snytkine
>> > Web Developer
>> > Ultra Logistics, Inc.
>> > Phone: (888) 220-4640 x 2097
>> > Fax: (888) 795-6642
>> > E-Mail: dsnytk...@ultralogistics.com
>> > Web: www.ultralogistics.com
>> >
>> > "A Top 100 Logistics I.T. Provider in 2011"
>> >
>> >
>> >
>> >
>> > --
>> > PHP Internals - PHP Runtime Development Mailing List
>> > To unsubscribe, visit: http://www.php.net/unsub.php
>> >
>> >
>>



-- 
Tom Boutell
P'unk Avenue
215 755 1330
punkave.com
window.punkave.com

--
PHP Internals - PHP Runtime Development Mailing List
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to