rbt wrote:
Andrey Tatarinov wrote:
# skip bad object and continue with others
for object in objects:
    try:
        #do something to object
    except Exception:
        pass

Thanks Andrey. That's a great example of how to do it.

Actually, it's not really a "great" example, since it catches _all_ exceptions that might happen, and quietly ignores them. For example, in the following code, you might not realize that you've made a typo and none of the items in the list are actually being checked, even though there is obviously no problem with any of these simple items (integers from 0 to 9).

def fornat_value(val):
    return '-- %5d --' % val

L = range(10)
for val in L:
    try:
        print format_value(val)
    except Exception:
        pass

It's almost always better to identify the *specific*
exceptions which you are expecting and to catch those,
or not do a simple "pass".  See Vincent's response,
for example, where he explicitly asks only for ValueErrors
and lets others propagate upwards, to be reported.

(I realize these were contrived examples, but examples
that don't mention this important issue risk the propagation
of buggy code...)

-Peter
--
http://mail.python.org/mailman/listinfo/python-list

Reply via email to