On Wed, 16 Nov 2005 09:06:01 -0500, Rick Wotnaz wrote: [cutting to the important bit] >> except TypeError, msg: >> if msg == "iteration over non-sequence": >> # handle non-iterable case
> Does this in fact work on your system? On mine (2.4.1 (#65, Mar 30 > 2005, 09:13:57) [MSC v.1310 32 bit (Intel)]), it doesn't seem to. Dammit, that will teach me not to test my code before posting. No it doesn't: msg is an object of type exceptions.TypeError. The easy fix is to just coerce it to a string: if str(msg) == "iteration over non-sequence": which *does* work on my system. But perhaps a better way is to do this: # Create an instance of the exception you expect: try: for i in 0: pass except TypeError, ITER_OVER_NON_SEQ: pass # Now run your code... try: ...blah blah blah... except TypeError, msg if str(msg) == str(ITER_OVER_NON_SEQ): ...blah blah blah... This means we're no longer assuming what the error message will be, which makes our code a lot more future-proof and implementation-proof: if some version of Python changes the error string from "iteration over non-sequence" to something else, the code should continue to work correctly. -- Steven. -- http://mail.python.org/mailman/listinfo/python-list