On 2010-03-04 11:02 AM, Alf P. Steinbach wrote: > * Robert Kern: >> On 2010-03-04 09:48 AM, Alf P. Steinbach wrote: >>> * 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"? >> >> When there is a specific context manager that removes the need for >> boilerplate. > > That's "cleanup no matter what happen". For the "# Do stuff" block, yes. For the initialization block, you can write a context manager to do it either way, as necessary. >>> 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? >> >> No, it only argues that "with Cleanup():" is supernumerary. > > I don't know what "supernumerary" means, http://www.merriam-webster.com/dictionary/supernumerary > but to the degree that the > argument says anything about a construct that is not 'finally', it says > the same about general "with". He's ignorant of the use cases of the with: statement, true. Given only your example of the with: statement, it is hard to fault him for thinking that try: finally: wouldn't suffice. -- Robert Kern "I have come to believe that the whole world is an enigma, a harmless enigma that is made terrible by our own mad attempt to interpret it as though it had an underlying truth." -- Umberto Eco
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4