[Python-Dev] PEP 377 - allow __enter__() methods to skip the statement body
fuzzyman at voidspace.org.uk
Sun Mar 15 23:37:11 CET 2009
> On Sun, Mar 15, 2009, Michael Foord wrote:
>> Note that using exceptions for control flow can be bad for other
>> implementations of Python. For example exceptions on the .NET framework
>> are very expensive. (Although there are workarounds such as not really
>> raising the exception - but they're ugly).
>> Isn't it better practise for exceptions to be used for exceptional
>> circumstances rather than for control flow?
> It seems to me that we as a development community already made a decision
> when we switched to StopIteration as the primary mechanism for halting
> ``for`` loops. (Not that it was really a new decision because parts of
> the Python community have always advocated using exceptions for control
> flow, but the ``for`` loop enshrines it.) I doubt that using exceptions
> for control flow in ``with`` blocks will cause anywhere near so much a
> performance degradation.
Well, StopIteration is still an implementation detail that only
occasionally bleeds through to actual programming. It says nothing about
whether using exceptions for non-exceptional circumstances (control
flow) is good practise. Personally I think it makes the intent of code
less easy to understand - in effect the exceptions *are* being used as a
More information about the Python-Dev