>> except: >> pass >> >> try not to code these 2 lines in anything that you do because it will >> come back to haunt you when something is not working right but you >> can't find any errors. that's because this code masks and throws away >> everything!! > > there are two potential error types: IndexError and ValueError. I assumed > that if > either one occurred, we would want to leave that particular list member (if > it exists) as-is (hence the pass). > : > - catch the exception, test to see whether it's an IndexError or a > ValueError, and if not then do something; > :
as opposed to the above... except (IndexError, ValueError): pass ...is much more acceptable. there are 2 general conventions: - catch errors explicitly (as to not mask the others) and pass/ignore - catch 'em all (except Exception) and do *some*thing (not pass) both of those cases shows that you did your due diligence and that you're just not blindly throwing things away. > Generally, if there are two or more "acceptable" errors that you can foresee, > but you still want to catch any others, what's an elegant, readable, and > computationally-cheap way to do it? Maybe a dictionary of exceptions...? A tuple of exceptions works, just like what we did above, and more, i.e., (IndexError, ValueError, TypeError, KeyError... hope this helps! -- wesley - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - "Core Python Programming", Prentice Hall, (c)2007,2001 "Python Fundamentals", Prentice Hall, (c)2009 http://corepython.com wesley.j.chun :: wescpy-at-gmail.com python training and technical consulting cyberweb.consulting : silicon valley, ca http://cyberwebconsulting.com _______________________________________________ Tutor maillist - Tutor@python.org http://mail.python.org/mailman/listinfo/tutor