Fictizia / Master-en-Programacion-con-Python_ed1

FICTIZIA » Máster en Programación con Python — 1ª Edición
https://fictizia.com/formacion/master-programacion-python
GNU Affero General Public License v3.0
44 stars 27 forks source link

Excepciones jerárquicas #38

Open delapuente opened 5 years ago

delapuente commented 5 years ago

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.

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)

@ramoncorominas