Los errores son parte de la interfaz
Decide de qué fallas recuperarte, cuáles reportar y cuáles deben detener el programa.
AL TERMINAR, PODRÁS
- Distinguir errores de sintaxis de excepciones en tiempo de ejecución
- Capturar una falla concreta en una frontera útil
- Conservar la evidencia mientras liberas recursos
Descripción del diagrama: Leer el archivo → Falló; Falló → Reintentar (arreglo conocido); Falló → Informar, parar (si no); Reintentar → Limpiar; Informar, parar → Limpiar
Lee la falla
Un error de sintaxis (syntax error) impide que Python entienda el programa.
Una excepción (exception) ocurre mientras se ejecuta un programa que sí es válido: falla una conversión, falta un archivo o una dependencia tarda demasiado (timeout). El traceback (el reporte de la falla) muestra la cadena de llamadas y el punto donde apareció la excepción. Lee el tipo de excepción y el mensaje del final; luego revisa la llamada y las entradas relevantes.
No cambies código al azar hasta que el traceback desaparezca. Primero forma una explicación que prediga por qué esta entrada concreta causó esta falla concreta.
Recupérate solo cuando tengas una política
Captura una excepción donde puedas tomar una decisión con sentido.
Una frontera de entrada por línea de comandos puede convertir un ValueError en un mensaje útil. Un worker puede reprogramar una falla temporal de red. Un error de programación normalmente debe quedar visible para poder corregirlo.
Capturar cualquier Exception y seguir como si nada puede convertir una falla clara en pérdida silenciosa de datos. Mantén el bloque protegido (el try) lo bastante pequeño para que el manejador no atrape por accidente una falla que no tiene nada que ver. Reporta el trabajo fallido de forma explícita en lugar de contarlo como completado.
raw_attempts = "three"
try:
attempts = int(raw_attempts)
except ValueError:
print("Attempts must be a whole number")
Liberar recursos no es lo mismo que recuperarse
Recursos como archivos y candados (locks) deben liberarse tanto si la operación funciona como si falla.
Un context manager (gestor de contexto), usado con with, expresa ese ciclo de vida. Un bloque finally también se ejecuta al terminar normalmente o cuando se propaga una excepción, así que sirve para liberar recursos, no para fingir que la operación salió bien. Conserva la causa original cuando traduzcas excepciones al lenguaje de tu dominio.
En Relay, distingue una entrada inválida de una infraestructura no disponible: reintentar una entrada inválida suele repetir la misma falla y gasta capacidad que necesitan los trabajos útiles.
ERROR FRECUENTE
Tragarse las excepciones con un manejador vacío hace que un sistema roto parezca sano. Hacer return dentro de finally también puede ocultar una excepción.
INTÉNTALO TÚ
Convierte un número de intentos escrito por el usuario. Maneja el texto mal formado por separado de un entero negativo, y deja visible un error de programación que no tenga relación.
Decide en el laboratorio.
El checkpoint de dos preguntas, tus notas y tu progreso guardado están en el laboratorio. Gratis y sin cuenta.
Abrir en el laboratorio ↗CONÉCTALO CON RELAY
Dale a Relay resultados separados de completado, reintentable e inválido. Asegúrate de que un trabajo inválido no borre la evidencia sobre el resto del lote.