try/except in a loop
Jean-Michel Pichavant
jeanmichel at sequans.com
Thu May 3 09:27:40 EDT 2012
Chris Kaynor wrote:
> On Wed, May 2, 2012 at 12:51 PM, J. Mwebaze <jmwebaze at 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
More information about the Python-list
mailing list