Python – Implementando excepciones personalizadas

Tengo un proyecto que necesito ejecutar y no tengo idea de cómo implementar excepciones personalizadas. En su mayoría hace funciones científicas complicadas, por ser vagas.

En general, se generarán excepciones si no se establece algo. Me han dado esto como un ejemplo de partida de runnables.

# Define a class inherit from an exception type class CustomError(Exception): def __init__(self, arg): # Set some exception infomation self.msg = arg try: # Raise an exception with argument raise CustomError('This is a CustomError') except CustomError, arg: # Catch the custom exception print 'Error: ', arg.msg 

No tengo idea de cómo debe funcionar esto o de cómo debo implementar mi código. No es muy explícito.

Para dar una idea de una excepción básica que necesita ser creada.

En una función:

 if self.humidities is None: print "ERROR: Humidities have not been set..." return 

Aparentemente esto necesita levantar / lanzar una excepción en su lugar.

Un ValueError parece adecuado para su ejemplo de humedades.

 if self.humidities is None: raise ValueError('Humidities value required') 

Si quieres ser específico:

 class HumiditiesError(Exception): pass def set_humidities(humidities): if humidities is None: raise HumiditiesError('Value required') try: set_humidities(None) except HumiditiesError as e: print 'Humidities error:', e.message 

Esto define una subclase de Exception llamada HumiditiesError . El comportamiento predeterminado parece suficiente para su ejemplo, por lo que el cuerpo de la clase está vacío ( pass ) ya que no se requiere ninguna funcionalidad adicional ni modificada.

NB Python 2 asumió. En Python 3 podrías acceder a los elementos de la tupla e.args .