La captura de excepciones en Python ayuda a garantizar que sus programas fallen con menos frecuencia. Esto hace que su código sea más confiable y brinde una mejor experiencia de usuario. En este artículo, explicaré cómo detectar múltiples excepciones en el mismo bloque try/except en Python.
¿Qué son las excepciones en Python?
Dentro PitónLas excepciones son un mecanismo de comunicación entre diferentes partes del programa. Este mecanismo de comunicación permite que una parte del sistema comunique que ha encontrado un error crítico que no sabe cómo manejar.
Entonces esto plantea una excepción. Otra parte del programa que sabe cómo manejar el error detectará la excepción y manejará el error correctamente.
Cuando no se controlan, las excepciones bloquearán el programa. Por lo tanto, el manejo de excepciones evita que su programa falle y lo hace más confiable.
Para este artículo, asumiré que ya conoce los conceptos básicos de generación y manejo de excepciones, que se tratan en este artículo de Introducción a Python Try/Except.
Importancia de manejar múltiples excepciones en Python
- Esto reduce la duplicación de código porque el mismo bloque maneja múltiples excepciones. Esto hace que el código sea más fácil de leer, modificar y eliminar.
- También le ayuda a escribir código más eficiente porque el tipo de error solo necesita verificarse una vez en lugar de varias veces.
Manejo de múltiples excepciones
La captura de múltiples excepciones se refiere a la situación en la que se detectan múltiples excepciones utilizando el mismo bloque excepto. En Python puedes detectar diferentes excepciones en bloques individuales excepto.
Alternativamente, cuando desee manejar las excepciones de la misma manera, puede manejarlas usando un solo bloque. Para hacer esto, necesitará detectar varias excepciones. En esta sección explicaré cómo hacer esto con un ejemplo.
#1. Detectar diferentes excepciones en diferentes bloques
Supongamos que tenemos un programa diseñado para tomar dos valores diferentes y dividirlos. En este programa, esperamos que se generen diferentes tipos de excepciones cuando el usuario ingresa valores no válidos. En particular, queremos manejar ValueError y ZeroDivisionError.
El ValueError se generará cuando el usuario ingrese un valor que no se puede convertir a un número entero. El ZeroDivisionError se generará cuando el segundo número sea cero. En ambos casos, queremos mostrar un mensaje de error que diga: «Ha ingresado un valor no válido».
Para hacer lo anterior, podemos escribir el siguiente código:
try:
dividend = int(input('Enter first num: '))
divisor = int(input('Enter second num: '))
quotient = dividend / divisor
print(quotient)
except ValueError as e:
print("You entered an invalid value")
except ZeroDivisionError as e:
print("You entered an invalid value")
except Exception as e:
print("Something went wrong")
Si ejecutamos el código anterior y el texto no se puede convertir a un número entero, este es el resultado:
Y si ingresamos el segundo número como 0, aquí está el resultado:
El código funciona como se esperaba, pero tenga en cuenta que tratamos a ValueError y ZeroDivisionError de la misma manera. Entonces hay mucha duplicación de código entre los dos bloques Excepto. Esto no es ideal porque estamos violando el principio DRY en programación. El principio DRY dice Den ningún A.repetir Sínosotros mismos.
Entonces, en lugar de escribir el código por separado, podemos combinar los dos bloques en un solo bloque que detecte múltiples excepciones. Si hacemos esto, evitamos la repetición.
#2. Detectar múltiples excepciones en un solo bloque Excepto
Para detectar múltiples excepciones, proporcionamos una tupla que especifica todos los errores que queremos detectar. A continuación se muestra un ejemplo en el que capturamos ValueError y ZeroDivisionError en un bloque de excepción:
try:
dividend = int(input('Enter first num: '))
divisor = int(input('Enter second num: '))
quotient = dividend / divisor
print(quotient)
except (ValueError, ZeroDivisionError) as e:
print("You entered an invalid value")
except Exception as e:
print("Something went wrong")
Esta es una implementación mucho mejor que el código anterior. Básicamente, para esto sirve el manejo de múltiples excepciones. El código anterior funciona igual que antes. Si prueba utilizando los ejemplos anteriores, debería funcionar como antes:
#3. Identificar qué excepción se detectó
El código anterior ejecuta el primer bloque excepto cuando se detecta un ValueError o ZeroDivisionError. En algunos casos, es posible que tenga un código que desee ejecutar para ambos errores y otro código que desee ejecutar para uno pero no para el otro error.
En este caso, primero debe identificar qué error se detectó y ejecutar el código apropiado.
Para identificar qué excepción se detectó, puede usar un bloque if/else dentro del bloque except. Por ejemplo:
try:
dividend = int(input('Enter first num: '))
divisor = int(input('Enter second num: '))
quotient = dividend / divisor
print(quotient)
except (ValueError, ZeroDivisionError) as e:
print("You entered an invalid value")
if isinstance(e, ValueError):
print('Value Error')
else:
print('Zero Division Error')
except Exception as e:
print("Something went wrong")
En este bloque, además de imprimir el mensaje de error genérico para ValueError y ZeroDivisionError, también comprobamos exactamente qué tipo de error detectamos e imprimimos un mensaje adicional. Si volvemos a probar el código, deberíamos ver mensajes adicionales específicos de la excepción detectada.
¿Cuándo le gustaría manejar múltiples excepciones?
En el caso general, manejar múltiples excepciones es ideal cuando desea ejecutar el mismo código para excepciones similares que podrían generarse. Esto incluye lo siguiente:
- Solicitudes de red que fallaron por diferentes motivos. De todos modos, es posible que desee informar al usuario que no se pudo acceder al servidor.
- Conexiones fallidas a la base de datos, lo que produce múltiples errores. Aunque estos errores pueden ser diferentes, su tratamiento puede ser el mismo.
- La E/S de archivos también produce errores que se pueden manejar de manera similar, como permisos y errores de disco lleno.
Conclusión
Este artículo analiza la combinación de varios bloques excepto en uno detectando varias excepciones simultáneamente. Esto ayuda a que su código sea más legible y fácil de mantener. Entonces quizás quieras leer este artículo sobre proyectos de Python para principiantes que deberías probar.
Si quiere puede hacernos una donación por el trabajo que hacemos, lo apreciaremos mucho.
Direcciones de Billetera:
- BTC: 14xsuQRtT3Abek4zgDWZxJXs9VRdwxyPUS
- USDT: TQmV9FyrcpeaZMro3M1yeEHnNjv7xKZDNe
- BNB: 0x2fdb9034507b6d505d351a6f59d877040d0edb0f
- DOGE: D5SZesmFQGYVkE5trYYLF8hNPBgXgYcmrx
También puede seguirnos en nuestras Redes sociales para mantenerse al tanto de los últimos post de la web:
- Telegram
Disclaimer: En Cryptoshitcompra.com no nos hacemos responsables de ninguna inversión de ningún visitante, nosotros simplemente damos información sobre Tokens, juegos NFT y criptomonedas, no recomendamos inversiones