Python try except para manejo controlado de errores

Python try except maneja errores en tiempo de ejecución para que el programa pueda continuar con un valor de respaldo. Úsalo cuando analizar entrada del usuario o leer un archivo puede fallar, pero el resto del trabajo debe seguir ejecutándose. La clave es envolver solo las líneas riesgosas, capturar la excepción esperada y proporcionar un valor seguro.

Ejemplo De Python Try Except Para Manejo De Errores

Salida:

La salida aparecerá aquí...

Salida:

0

Cómo Funciona Este Ejemplo

  • El bloque try intenta convertir el texto en un entero.
  • Cuando int() falla, el bloque except ValueError asigna un valor de respaldo.
  • El print se ejecuta después del bloque, así que el script siempre produce un número usable.
  • La salida muestra la ruta de respaldo, lo que prueba que el error se manejó en lugar de bloquearse.

Errores comunes con Python try except

Error 1: Capturar todo con un except sin tipo.

try:
    total = int(text)
except:
    total = 0
try:
    total = int(text)
except ValueError:
    total = 0

Por qué pasa: un except vacío captura errores que finalizan el sistema como KeyboardInterrupt y SystemExit, haciendo los programas más difíciles de detener y depurar. Prefiere la excepción específica que esperas.

Error 2: Poner demasiado código dentro de try y ocultar errores no relacionados.

total = 10

try:
    count = int(text)
    ratio = total / count
except Exception:
    ratio = 0
total = 10

try:
    count = int(text)
except ValueError:
    ratio = 0
else:
    ratio = total / count

Por qué pasa: los manejadores amplios pueden ocultar errores de líneas que deberían fallar claramente. El bloque else solo se ejecuta cuando no ocurre ninguna excepción, así que los errores inesperados no quedan ocultos.

Error 3: Ordenar bloques except de amplio a específico.

try:
    count = int(text)
except Exception:
    count = 0
except ValueError:
    count = 0
try:
    count = int(text)
except ValueError:
    count = 0
except Exception:
    count = 0

Por qué pasa: Python elige el primer manejador que coincide, así que una excepción amplia colocada primero hace que el específico sea inalcanzable.

Consideraciones De Rendimiento

Un bloque try sin excepciones es eficiente, pero lanzar y capturar excepciones es relativamente costoso. Si los fallos son esperados como parte del flujo normal, una comprobación previa simple (como validar la entrada) puede ser más rápida y clara. Cuando los fallos son realmente excepcionales, try y except mantienen el camino feliz legible sin un costo de rendimiento significativo.

Cuándo usar try except

  • Úsalo cuando una operación puede fallar y tienes un valor de respaldo seguro (analizar texto, leer un archivo o llamar a una API).
  • Úsalo para mantener el trabajo por lotes en marcha omitiendo elementos defectuosos mientras registras el error.
  • Mantén el bloque try ajustado para que solo proteja la línea riesgosa y otros errores sigan saliendo a la luz.
  • Evítalo cuando el fallo es la ruta normal y una condición simple es más barata y clara.
  • Evita capturar BaseException o un Exception genérico a menos que vuelvas a lanzar o registres con intención.