Relanzar excepción en Python

Aditya Raj 21 junio 2023
  1. Lanzar una excepción en Python
  2. Lanzar una excepción con un mensaje personalizado en Python
  3. Relanzar excepción en Python
Relanzar excepción en Python

Python nos proporciona bloques try-except para manejar excepciones en nuestros programas. También nos da la instrucción raise para lanzar manualmente una excepción.

Este artículo discutirá cómo podemos volver a lanzar una excepción en un programa de Python.

Lanzar una excepción en Python

Podemos usar la sentencia raise para lanzar una excepción en un programa. La sintaxis de la sentencia raise es la siguiente.

raise exception_name

Aquí, la declaración raise toma una excepción llamada exception_name como entrada y lanza la excepción que maneja el intérprete de Python.

Por ejemplo, podemos generar una excepción ValueError en nuestro programa usando la instrucción raise.

  1. El siguiente programa le pide al usuario que proporcione un número como entrada usando la función input(). La función input() devuelve la entrada como una cadena asignada al número de variable.

  2. Después de eso, el programa verifica si la entrada consta solo de dígitos (o no). Para ello utilizamos el método isdigit().

    El método isdigit(), cuando se invoca en una cadena, comprueba si todos los caracteres de la cadena son dígitos decimales o no. En caso afirmativo, devuelve True; en caso contrario, devuelve False.

number = input("Please Enter a number:")
if number.isdigit():
    number = int(number)
    square = number * number
    print("The square of {} is {}".format(number, square))
else:
    raise ValueError

Producción :

Please Enter a number:Aditya
Traceback (most recent call last):
  File "/home/aditya1117/PycharmProjects/pythonProject/webscraping.py", line 7, in <module>
    raise ValueError
ValueError

En el programa anterior, si la entrada que da el usuario consta solo de dígitos decimales, se ejecuta el código en el bloque if. Por lo tanto, la entrada se convierte en un número entero mediante la función int().

Finalmente, se calcula e imprime el cuadrado del entero.

Si la entrada proporcionada por el usuario consta de caracteres que no sean dígitos decimales, se ejecuta el código dentro de la instrucción else y el programa lanza una excepción ValueError.

Aquí, la excepción ValueError es una excepción incorporada.

Lanzar una excepción con un mensaje personalizado en Python

También podemos lanzar una excepción personalizada con un mensaje personalizado. Para ello, crearemos un objeto de excepción utilizando el constructor Exception().

El constructor Exception() toma una cadena de mensaje como argumento de entrada y devuelve una excepción después de la ejecución. Podemos lanzar la excepción personalizada usando la instrucción raise, como se muestra en el siguiente ejemplo.

number = input("Please Enter a number:")
if number.isdigit():
    number = int(number)
    square = number * number
    print("The square of {} is {}".format(number, square))
else:
    raise Exception("The input contains characters other than decimal digits.")

Producción :

Please Enter a number:Aditya
Traceback (most recent call last):
  File "/home/aditya1117/PycharmProjects/pythonProject/webscraping.py", line 7, in <module>
    raise Exception("The input contains characters other than decimal digits.")
Exception: The input contains characters other than decimal digits.

Aquí, puede ver que el programa genera una excepción personalizada con el mensaje “La entrada contiene caracteres que no son dígitos decimales”.

Relanzar excepción en Python

Las excepciones en Python se manejan usando bloques try-except. Cuando se lanza una excepción en un bloque try, se captura en el bloque except y se toman las medidas adecuadas.

Puedes observar esto en el siguiente ejemplo.

number = input("Please Enter a number:")
try:
    if number.isdigit():
        number = int(number)
        square = number * number
        print("The square of {} is {}".format(number, square))
    else:
        raise Exception("The input contains characters other than decimal digits.")
except Exception:
    print("In the except block. exception handled.")

Producción :

Please Enter a number:Aditya
In the except block. exception handled.

Aquí, la excepción se genera en el bloque try. Luego, capturamos la excepción en el bloque excepto, la manejamos si es necesario e imprimimos un mensaje apropiado.

Si desea volver a generar la excepción en su programa de Python, puede usar la instrucción aumentar en el bloque excepto, como se muestra a continuación.

number = input("Please Enter a number:")
try:
    if number.isdigit():
        number = int(number)
        square = number * number
        print("The square of {} is {}".format(number, square))
    else:
        raise Exception("The input contains characters other than decimal digits.")
except Exception:
    print("In the except block. exception handled. Rethrowing exception.")
    raise

Producción :

Please Enter a number:Aditya
In the except block. exception handled. Rethrowing exception.
Traceback (most recent call last):
  File "/home/aditya1117/PycharmProjects/pythonProject/webscraping.py", line 8, in <module>
    raise Exception("The input contains characters other than decimal digits.")
Exception: The input contains characters other than decimal digits.

En este ejemplo, primero capturamos y manejamos la excepción en el bloque excepto. Después de eso, usamos la instrucción raise para volver a generar la excepción en Python.

Autor: Aditya Raj
Aditya Raj avatar Aditya Raj avatar

Aditya Raj is a highly skilled technical professional with a background in IT and business, holding an Integrated B.Tech (IT) and MBA (IT) from the Indian Institute of Information Technology Allahabad. With a solid foundation in data analytics, programming languages (C, Java, Python), and software environments, Aditya has excelled in various roles. He has significant experience as a Technical Content Writer for Python on multiple platforms and has interned in data analytics at Apollo Clinics. His projects demonstrate a keen interest in cutting-edge technology and problem-solving, showcasing his proficiency in areas like data mining and software development. Aditya's achievements include securing a top position in a project demonstration competition and gaining certifications in Python, SQL, and digital marketing fundamentals.

GitHub

Artículo relacionado - Python Exception