Chris Kaynor wrote:
On Wed, May 2, 2012 at 12:51 PM, J. Mwebaze <jmweb...@gmail.com> wrote:
I have multiple objects, where any of them can serve my purpose.. However
some objects might not have some dependencies. I can not tell before hand if
the all the dependencies exsit. What i want to is begin processing from the
1st object, if no exception is raised, i am done.. if an exception is
raised, the next object is tried, etc  Something like

objs = [... ]
try:
  obj = objs[0]
  obj.make()
except Exception, e:
  try:
      obj = objs[1]
      obj.make()
  except Exception, e:
     try:
        obj = objs[2]
        obj.make()
     except Exception, e:
       continue

The problem is the length of the list of objs is variable... How can i do
this?


for obj in objs:
    try:
        obj.make()
    except Exception:
        continue
    else:
        break
else:
    raise RuntimeError('No object worked')

For the record, an alternative solution without try block:

candidates = [obj for obj in objs if hasattr(obj, 'make') and callable(obj.make)]
if candidates:
   candidates[0].make()


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

Reply via email to