Relanzar excepciones en Python

Python nos proporciona un bloque try-except para manejar las excepciones en el programa. También nos proporciona una declaración de aumento para lanzar excepciones manualmente.

Este artículo analiza cómo volver a generar excepciones en los programas de Python.


Lanzar una excepción en Python

Podemos usar raisela declaración para lanzar excepciones en el programa. raiseLa sintaxis de la sentencia es la siguiente.

raise exception_name

Aquí, raisela declaración toma una excepción llamada nombre_excepción como entrada y lanza una excepción que es manejada por el intérprete de Python.

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

  1. El siguiente programa le pide al usuario que proporcione un número como entrada usando input()la función. input()La función devuelve la entrada como una cadena asignada al número de variable.
  2. Luego, el programa verifica si la entrada contiene solo números (o no). Para ello utilizamos isdigit()el método.

    El método isdigit(), cuando se invoca en una cadena, comprueba si todos los caracteres de la cadena son dígitos decimales. 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 proporcionada por el usuario contiene solo números decimales, entonces se ejecuta el código dentro del bloque if. Por lo tanto, utilice la función int() para convertir la entrada en un número entero.

Finalmente, se calcula e imprime el cuadrado del entero.

Si el usuario ingresa un carácter que no sea un número decimal, ejecute el código en la instrucción else y el programa arrojará una excepción ValueError.

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


Lanzar una excepción con un mensaje personalizado en Python

También podemos lanzar excepciones personalizadas con mensajes personalizados. Para hacer esto, usaremos Exception()el constructor para crear un objeto de excepción.

Exception()El constructor toma una cadena de mensaje como su parámetro de entrada y devuelve una excepción después de la ejecución. Podemos lanzar excepciones personalizadas usando una declaración de aumento 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 generó una excepción personalizada con el mensaje La entrada contiene caracteres que no son dígitos decimales.


Relanzar excepciones en Python

Las excepciones en Python se manejan usando bloques try-except. Cuando se lanza una excepción en el bloque de prueba, se detecta en el bloque de excepción 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í, se lanza una excepción en el bloque de prueba. Luego capturamos la excepción en el bloque excepto, la manejamos si es necesario e imprimimos un mensaje apropiado.

Si desea volver a generar una excepción en un programa de Python, puede usar la declaración de aumento 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. Luego usamos la declaración en Python raisepara volver a generar la excepción.

Supongo que te gusta

Origin blog.csdn.net/fengqianlang/article/details/131505728
Recomendado
Clasificación