On Mon, Jul 7, 2014 at 6:00 PM, Steven D'Aprano <st...@pearwood.info> wrote: > How do people feel about code like this? > > try: > name = input("Enter file name, or Ctrl-D to exit") > # On Windows, use Ctrl-Z [enter] instead. > fp = open(name) > except EOFError: > sys.exit() > except IOError: > handle_bad_file(name) > else: > handle_good_file(fp)
It seems trivial in this example to break it into two try blocks: try: name = input("Enter file name, or Ctrl-D to exit") # On Windows, use Ctrl-Z [enter] instead. except EOFError: sys.exit() try: fp = open(name) except IOError: handle_bad_file(name) else: handle_good_file(fp) But if the code's more complicated and it's not so easy to split, then sure, doesn't seem a problem. It's like spam[foo//bar] and then catching either IndexError or ZeroDivisionError - there's no big confusion from having two distinct sources of two distinct errors handled by two distinct except blocks. ChrisA -- https://mail.python.org/mailman/listinfo/python-list