On Saturday, 6 February 2016 at 14:25:21 UTC, Ola Fosheim Grøstad wrote:
See, even Python supports this. :-)

And D supports the "with" statement in python, in the form of "scope()" statements. The D way is slightly less misleading too, as

with somethingThatFails() as e:
  print(e)

doesn't make it obvious that neither __enter__ nor __exit__ will be called if you raise an exception in the creation of the object, or that if you raise an exception in __enter__, then __exit__ won't be called.

auto e = somethingThatFails()
scope(failure) cleanup(e);

makes more sense to me, since it's blatantly obvious that the construction (and entering) process isn't covered by the cleanup routine.

Reply via email to