Module (57%)
Section (60%)

Cómo crear tu propia excepción: continuación

Cuando vas a construir un universo completamente nuevo lleno de criaturas completamente nuevas que no tienen nada en común con todas las cosas familiares, es posible que desees construir tu propia estructura de excepciones.

Por ejemplo, si trabajas en un gran sistema de simulación destinado a modelar las actividades de un restaurante de pizza, puede ser conveniente formar una jerarquía de excepciones por separado.

Puedes comenzar a construirla definiendo una excepción general como una nueva clase base para cualquier otra excepción especializada. Lo hemos hecho de la siguiente manera:

class PizzaError(Exception): def __init__(self, pizza, mensaje): Exception.__init__(mensaje) self.pizza = pizza

Nota: vamos a recopilar más información específica aquí de lo que recopila una Excepción regular, entonces nuestro constructor tomará dos argumentos:

  • Uno que especifica una pizza como tema del proceso.
  • Otro que contiene una descripción más o menos precisa del problema.

Como puedes ver, pasamos el segundo parámetro al constructor de la superclase y guardamos el primero dentro de nuestra propiedad.


Un problema más específico (como un exceso de queso) puede requerir una excepción más específica. Es posible derivar la nueva clase de la ya definida PizzaError, como hemos hecho aquí:

class DemasiadoQuesoError(PizzaError): def __init__(self, pizza, queso, mensaje): PizzaError._init__(self, pizza, mensaje) self.queso = queso

La excepción DemasiadoQuesoError necesita más información que la excepción regular PizzaError, así que lo agregamos al constructor, el nombre queso es entonces almacenado para su posterior procesamiento.



Code

class PizzaError(Exception):
def __init__(self, pizza, mensaje):
Exception.__init__(mensaje)
self.pizza = pizza


class DemasiadoQuesoError(PizzaError):
def __init__(self, pizza, queso, mensaje):
PizzaError._init__(self, pizza, mensaje)
self.queso = queso
Report a BugSettingsCopy to ClipboardShareDownloadUpload Local FileResetTipTip