try-except
- Obtener enlace
- X
- Correo electrónico
- Otras aplicaciones
¿Qué es try-except?
Es una estructura que maneja errores (excepciones) en Python:
try: Código que podría fallar
except: Qué hacer si ocurre un error específico
finally: Código que SIEMPRE se ejecuta (ocurra o no error)
Respondiendo tu pregunta: ¿Debo saber el nombre exacto del error?
SÍ, debes conocer el tipo de error específico que quieres capturar. No puedes poner nombres al azar.
Tipos comunes de errores que puedes usar:
# Ejemplos de errores válidos:
except FileNotFoundError: # Archivo no existe
except ValueError: # Valor incorrecto
except TypeError: # Tipo de dato incorrecto
except ZeroDivisionError: # División por cero
except IndexError: # Índice fuera de rango
except KeyError: # Clave no existe en diccionarioAlternativas si no sabes el error exacto:
# 1. Capturar múltiples errores:
except (FileNotFoundError, PermissionError):
print("Error con el archivo")
# 2. Capturar cualquier error:
except Exception as e:
print(f"Ocurrió un error: {e}")
# 3. Capturar error general:
except:
print("Algo salió mal")En tu código específico:
except FileNotFoundError: # ✅ CORRECTO - Este error existe
print("Error: No se pudo encontrar el archivo.")
except ErrorQueNoExiste: # ❌ INCORRECTO - Python dará error
print("Esto fallará")Consejo: Si no estás seguro, usa except Exception as e: para ver qué error específico está ocurriendo.
El except sin nombre específico
Cuando usas except: sin especificar un tipo de error, captura TODOS los errores que ocurran en el bloque try.
En tu ejemplo:
try:
numero = int(input("Introduce un número")) # Esto puede dar ValueError
numero2 = int(input("Introduce otro número"))
resultado = numero * numero2
print(resultado)
except: # ⬅️ Esto captura CUALQUIER error
print("Debes introducir números, no funciona si pones otra cosa")¿Qué errores captura este except?
ValueError: Si el usuario escribe "hola" en lugar de un número
KeyboardInterrupt: Si el usuario presiona Ctrl+C
MemoryError: Si no hay memoria suficiente
Cualquier otro error que ocurra
El problema con este enfoque:
try:
archivo = open("datos.txt", "r")
numero = int(input("Número: ")) # Si aquí da ValueError...
archivo.close() # ⚠️ Esto NUNCA se ejecuta si hay error
except: # Captura todos los errores por igual
print("Algo salió mal") # ⚠️ No sabes qué realmente fallóMejor práctica: Ser específico
try:
numero = int(input("Introduce un número"))
numero2 = int(input("Introduce otro número"))
resultado = numero * numero2
print(resultado)
except ValueError: # ⬅️ Solo captura el error esperado
print("Debes introducir números válidos")
except Exception as e: # ⬅️ Para otros errores inesperados
print(f"Error inesperado: {e}")Conclusión: El código de la imagen funciona, pero no es la mejor práctica porque oculta errores inesperados que podrías necesitar conocer.
- Obtener enlace
- X
- Correo electrónico
- Otras aplicaciones
Comentarios
Publicar un comentario