hasattr () vs блок try-except для работы с несуществующими атрибутами

if hasattr(obj, 'attribute'): # do somthing против try: # access obj.attribute except AttributeError, e: # deal with AttributeError Что следует предпочесть и почему?