Cómo controlar las excepciones anidadas en pitón

A veces es necesario colocar una rutina de control de excepciones dentro de otra en un proceso llamado anidación. Cuando nido rutinas de control de excepciones, Python trata de encontrar un controlador de excepciones en el primer nivel anidado y luego pasa a las capas externas. Puede rutinas nido de control de excepciones tan profundamente como sea necesario para hacer que el código de seguridad.

Una de las razones más comunes de utilizar una doble capa de código de control de excepciones es cuando se quiere obtener la entrada de un usuario y la necesidad de colocar el código de entrada en un bucle para asegurarse de que en realidad obtener la información requerida. Los pasos siguientes muestran cómo este tipo de código podría funcionar.

1Abrir una ventana de Python Archivo

Ves un editor en el que puede escribir el código de ejemplo.

2Escriba el siguiente código en la ventana - presione ENTRAR después de cada línea:

TryAgain = Truewhile TryAgain: tratar: Valor = int (entrada ("Escriba un número entero. ")), Excepto ValueError: print ("Debe escribir un número entero!") Proveedores: DoOver = input ("Inténtelo de nuevo (s / n)? "), Excepto: print ("¡OK nos vemos la próxima vez!") TryAgain = Falseelse: if (str.upper (DoOver) == "norte"): TryAgain = Falseexcept KeyboardInterrupt: print ("Ha pulsado Ctrl + C!")impresión("Hasta la próxima!") = TryAgain Falseelse: print (Valor) TryAgain = False

El código comienza creando un bucle de entrada. El uso de bucles para este tipo de propósito es en realidad bastante común en las aplicaciones, ya que no desea que la aplicación para terminar cada vez que se comete un error de entrada. Este es un circuito simplificado, y normalmente se crea una función separada para mantener el código.

Video: Tutorial de Python parte 11 - Capturar errores try-except

Cuando se inicia el bucle, la aplicación solicita al usuario que escriba un número entero. Puede ser cualquier valor entero. Si el usuario escribe cualquier valor no entero o prensas Ctrl + C, Cmd + C, o otra interrupción combinación de teclas, el código de control de excepciones se hace cargo. De lo contrario, la aplicación imprime el valor que el usuario suministra y conjuntos Inténtalo de nuevo a Falso, que hace que el bucle a fin.

UN ValueError excepción puede ocurrir cuando el usuario comete un error. Debido a que usted no sabe por qué la entrada del usuario el valor incorrecto, usted tiene que preguntarse si el usuario quiere volver a intentarlo. Por supuesto, cada vez más la entrada del usuario podría generar otra excepción. El interior tratar ?? excepto bloque de código se encarga de esta entrada secundaria.

Video: Tutorial python 7 : Manejo de excepciones try y except

Observe el uso de la str.upper () funcionar al conseguir la entrada de caracteres por parte del usuario. Esta función hace posible recibir y o Y como entrada y aceptar a los dos. Cada vez que usted le pide al usuario para la entrada de caracteres, es una buena idea para convertir los caracteres en minúsculas a mayúsculas para que pueda realizar una sola comparación (reduciendo la posibilidad de error).

los KeyboardInterrupt excepción muestra dos mensajes y luego sale automáticamente mediante el establecimiento Inténtalo de nuevo a Falso. los KeyboardInterrupt sólo se produce cuando el usuario presiona una combinación de teclas específica diseñada para finalizar la aplicación. El usuario es poco probable que quieran seguir utilizando la aplicación en este punto.

3Seleccione Ejecutar → Módulo Run

Aparece una ventana abierta Python Shell. La aplicación solicita al usuario que introduzca un número entero.

4Escriba Hola y pulse Intro

La aplicación muestra un mensaje de error y le preguntará si desea volver a intentarlo.

Respuesta a una pregunta de sí o no en Python.

5Escriba Y y presione Intro

La aplicación le pedirá que introduzca un número entero de nuevo.

65.5 Tipo y pulse Intro

De nuevo la aplicación muestra el mensaje de error y le preguntará si desea volver a intentarlo.

7Presione Ctrl + C, Cmd + C, u otra combinación de teclas para interrumpir la aplicación

La aplicación termina. Observe que el mensaje es el de la excepción interna. La aplicación nunca llega a la excepción exterior debido a que el controlador de excepciones interior proporciona el manejo de excepciones genérico.

Un bucle de entrada en Python.

8Seleccione Ejecutar → Módulo Run

Aparece una ventana abierta Python Shell. La aplicación solicita al usuario que introduzca un número entero.

Presione Ctrl + C para interrumpir la aplicación Python.

9Presione Ctrl + C, Cmd + C, u otra combinación de teclas para interrumpir la aplicación

La aplicación termina. Observe que el mensaje es el de la excepción exterior. En los pasos preious, el usuario finaliza la aplicación pulsando una tecla de interrupción. Sin embargo, la aplicación utiliza dos controladores de excepciones diferentes para abordar el problema.

Artículos Relacionados