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

AltStyle によって変換されたページ (->オリジナル) /