In article <[EMAIL PROTECTED]>, Rick Wotnaz <[EMAIL PROTECTED]> wrote:
> Steven D'Aprano <[EMAIL PROTECTED]> wrote in > news:[EMAIL PROTECTED]: > > > def foo(inputVal): > > try: > > for val in inputVal: > > # do stuff > > except TypeError, msg: > > if msg == "iteration over non-sequence": > > # handle non-iterable case > > else: > > # some other TypeError is a bug, so re-raise the > > exception raise > > 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. I > tried > if msg.find("iteration over non-sequence") >= 0: > ... but I got a traceback, and > AttributeError: TypeError instance has no attribute 'find' > ... which leads me to belive that 'msg' is not type(str). It can be > coerced (str(msg).find works as expected). But what exactly is msg? > It appears to be of <type 'instance'>, and does not test equal to a > string. This is not the least surprise to me. It's an easy experiment to do: ------------------- Roy-Smiths-Computer:play$ cat ex.py #!/usr/bin/env python try: 1 + "foo" except TypeError, msg: print type(msg) print msg print repr(msg) print dir(msg) Roy-Smiths-Computer:play$ py ex.py <type 'instance'> unsupported operand type(s) for +: 'int' and 'str' <exceptions.TypeError instance at 0x36d968> ['__doc__', '__getitem__', '__init__', '__module__', '__str__', 'args'] --------------------- -- http://mail.python.org/mailman/listinfo/python-list