A "scopeguard" for Python
Alf P. Steinbach
alfps at start.no
Thu Mar 4 10:48:41 EST 2010
* Jean-Michel Pichavant:
> Alf P. Steinbach wrote:
>>> From your post, the scope guard technique is used "to ensure some
>>> desired cleanup at the end of a scope, even when the scope is exited
>>> via an exception." This is precisely what the try: finally: syntax is
>>> for.
>>
>> You'd have to nest it. That's ugly. And more importantly, now two
>> people in this thread (namely you and Mike) have demonstrated that
>> they do not grok the try functionality and manage to write incorrect
>> code, even arguing that it's correct when informed that it's not, so
>> it's a pretty fragile construct, like goto.
>
> You want to execute some cleanup when things go wrong, use try except.
> You want to do it when things go right, use try else. You want to
> cleanup no matter what happen, use try finally.
>
> There is no need of any Cleanup class, except for some technical
> alternative concern.
Have you considered that your argument applies to the "with" construct?
You have probably not realized that.
But let me force it on you: when would you use "with"?
Check if that case is covered by your argument above.
Now that you've been told about the "with" angle, don't you think it's a kind of
weakness in your argument that it calls for removing "with" from the language?
I recommend that you think about why your argument is invalid.
Or, as I like to say, why your argument is completely bogus.
Cheers & hth.,
- Alf
More information about the Python-list
mailing list