Tenemos una jeraquía de excepciones y diferentes acciones por cada tipo de excepción. Queremos llevar a cabo estas acciones de forma que, si salta una excepción de la jerarquía, se lleve a cabo la acción correspondiente a su tipo, y a la del tipo padre, y a la del tipo abuelo..., pero en el orden inverso: todas las acciones desde la del tipo más general, a la del tipo más específico.
class AnimalTriedAccess(Exception): pass
class CatTriedAccess(Exception): pass
class DogTriedAccess(Exception): pass
try:
raise AnimalTriedAccess('critter')
# raise DogTriedAccess('Doghnut')
except AnimalTriedAccess as ex:
if isinstance(ex, AnimalTriedAccess):
print('Animals not allowed:', ex)
if isinstance(ex, DogTriedAccess):
print('Even worst if it is a dog!', ex)
if isinstance(ex, CatTriedAccess):
print('Cats are not so bad...', ex)
Relacionado con la sección Capturar una excepción.
Tenemos una jeraquía de excepciones y diferentes acciones por cada tipo de excepción. Queremos llevar a cabo estas acciones de forma que, si salta una excepción de la jerarquía, se lleve a cabo la acción correspondiente a su tipo, y a la del tipo padre, y a la del tipo abuelo..., pero en el orden inverso: todas las acciones desde la del tipo más general, a la del tipo más específico.
@ramoncorominas