Alan Gauld wrote: > On 22/08/13 21:27, Chris Down wrote: > >> You can also use the "else" clause if there is stuff you want to run if >> the try block doesn't raise the caught exception, which avoids putting it >> in "try" if you don't intend to exit from the exception. > > I admit that I've never really found a use for else in a try block. > I don;t see much advantage in > > try: f(x) > except MyError: > pass > else: > g(x) > h(x) > > over > > try: f(x) > except MyError: > pass > g(x) > h(x) > > Unless you really only want g(x) executed if there > is no MyError exception but want h(x) executed regardless. > > I guess where h() is not using x it might be helpful but in most(all?) > of my code I've usually bailed when x has gone > wrong or I've fixed things such that hg() and h() are required. > > I'm curious, how often do others use the try/else combination?
I use it for clarity even when it is not necessary. I think try: text = file.read() except AttributeError: with open(file) as f: text = f.read() looks odd (an AttributeError when reading a file?) compared to try: read = file.read except AttributeError: with open(file) as f: text = f.read() else: text = read() Ah -- we're not sure whether it's a file or a filename. Looking through my bunch of casual scripts I find that 22% of try...except have an else clause compared to only 11.4% in /usr/lib/python2.7. _______________________________________________ Tutor maillist - Tutor@python.org To unsubscribe or change subscription options: http://mail.python.org/mailman/listinfo/tutor