Rene Pijlman <[EMAIL PROTECTED]> wrote: > A catchall seems like a bad idea, since it also catches AttributeErrors > and other bugs in the program.
All of the things like AttributeError are subclasses of StandardError. You can catch those first, and then catch everything else. In theory, all exceptions which represent problems with the external environment (rather than programming mistakes) should derive from Exception, but not from StandardError. In practice, some very old code may raise things which do not derive from Exception, which complicates things somewhat. -------------------------------------------------- #!/usr/bin/env python import socket try: x = [] y = x[42] except StandardError, foo: print "Caught a StandardError: ", foo except Exception, foo: print "Caught something else: ", foo try: socket.socket (9999) except StandardError, foo: print "Caught a StandardError: ", foo except Exception, foo: print "Caught something else: ", foo try: raise "I'm a string pretending to be an exception" except StandardError, foo: print "Caught a StandardError: ", foo except Exception, foo: print "Caught something else: ", foo -------------------------------------------------- Roy-Smiths-Computer:play$ ./ex.py Caught a StandardError: list index out of range Caught something else: (43, 'Protocol not supported') Traceback (most recent call last): File "./ex.py", line 21, in ? raise "I'm a string pretending to be an exception" I'm a string pretending to be an exception -- http://mail.python.org/mailman/listinfo/python-list