Felipe Almeida Lessa wrote: > Em Qua, 2006-04-19 às 16:54 -0700, mwt escreveu: > > This works when I try it, but I feel vaguely uneasy about putting > > method calls in exception blocks. > > What do you put in exception blocks?! > > > > So tell me, Brave Pythoneers, is this > > evil sorcery that I will end up regretting, or is it just plain good > > ol' Python magic? > > IMHO, the exception block in Python is used a lot in places where you > could use an if-then-else, like your example that could be written as > > if internet_available(): > [...] #doing some internet stuff > else: > alternate_method_that_doesnt_need_internet() > > So yes, I think there's no problem there.
What if the service is overloaded and always times out? For end user it's basically the same as there is no internet access. I routinely use the following pattern: unrecoverable = MemoryError, IOError try: do_your_best() except unrecoverable, e: util.help_on_error(e) sys.exit(1) def do_your_best(): recoverable = IOError, socket.error, SomeOtherError try: do_something() except recoverable, e: do_something_else() -- http://mail.python.org/mailman/listinfo/python-list