Raise en Python

raise en python

 

La sentencia raise en Python es una declaración simple que se utiliza para lanzar una excepción específica en un determinado punto de nuestro código (documentación oficial).

Qué es una excepción

Para comprender correctamente esta sentencia necesitamos conocer el concepto de excepción. Este término se refiere a un error que surge en tiempo de ejecución, es decir, nuestro código puede estar perfecto en cuánto a sintaxis, pero puede producirse un error por otros motivos. Por ejemplo, cuando interactuamos con el usuario o intentamos acceder a un fichero que no existe.

Si quieres profundizar y entender de forma práctica este concepto te recomiendo este artículo.

Motivos para lanzar excepciones

Puede que pienses que lanzar excepciones es poco habitual, porque para que quiero lanzar excepciones directamente en el código si ya se lanzan por si solas. Puede que este razonamiento sea suficiente cuando nuestro programa es sencillo.

Ahora imagina que tienes una aplicación de una dificultad considerable y quieres hacer un control de errores exhaustivo, definiendo ciertas excepciones especiales que en Python no están contempladas. Pues en este caso necesitarías lanzarlas en los puntos del código que definas para posteriormente capturarlas.

Lanzar excepciones con raise en Python

Para finalizar vamos a ver un ejemplo práctico de como se lanzaría una excepción que definimos nosotros mismos.

Definir excepción

Imaginemos que tenemos un objeto persona y que con ese objeto se nos pueden producir ciertos errores. Cuando se produzcan estos errores lanzaremos la siguiente excepción con el mensaje de error correspondiente:

class Error(Exception): # Hereda de Exception
    """Clase base para excepciones en el módulo."""
    pass
class personError(Error): # Hereda de Error
    """Excepción lanzada por errores con alguna instancia
       de persona
    Atributos:
        num -- numero por el que ocurre el error
        mensaje -- explicación del error
    """
    def __init__(self, person, mensaje):
        self.person = person
        self.mensaje = mensaje

Lanzar excepción

Ahora supongamos que tenemos un método que realiza una comprobación sobre el objeto persona que le pasemos por parámetro y si devuelve False lanzaremos nuestra excepción.

if not is_correct(p):
  raise personaError(p,"Error al comprobar")

Deja un comentario