Lingua-e
← Errores
Python

Qué significa SystemExit y cómo solucionarlo

Referencia del error

SystemExit

Lenguaje

Python

Severidad

Crítica

Cuándo ocurre

SystemExit se lanza por sys.exit() para indicar que el intérprete debe terminar.

Posibles soluciones

Captura SystemExit solo si necesitas realizar limpieza o registrar el código de salida. Usa un bloque finally para garantizar la limpieza. Si quieres devolver un estado de error desde una función sin salir, lanza una excepción personalizada en lugar de llamar a sys.exit().

Errores relacionados

Más detalles

SystemExit se lanza por sys.exit() para indicar que el intérprete debe terminar. Es una subclase de BaseException, no de Exception, por lo que evita la mayoría de los manejadores de excepciones. Lleva un código de salida que el sistema operativo usa para reportar éxito o fallo.

Por qué ocurre

  • sys.exit() se llama explícitamente para terminar el programa.
  • Una librería o framework llama a sys.exit() en un error irrecuperable.
  • argparse o herramientas similares llaman a sys.exit(2) cuando falla el análisis de argumentos.
  • Los ejecutores de pruebas capturan SystemExit para reportar el código de salida sin terminar realmente.

Posibles soluciones

Captura SystemExit solo si necesitas realizar limpieza o registrar el código de salida. Usa un bloque finally para garantizar la limpieza. Si quieres devolver un estado de error desde una función sin salir, lanza una excepción personalizada en lugar de llamar a sys.exit().

Ejemplos

Python

Código que causa el error

import sys

def main():
    sys.exit(1)

try:
    main()
except Exception as e:
    print(f"Caught: {e}")  # never runs

Error en la terminal

# The process exits with code 1 and nothing is printed.
# SystemExit is NOT a subclass of Exception.

Código corregido

import sys

def main():
    sys.exit(1)

try:
    main()
except SystemExit as e:
    print(f"Exit called with code: {e.code}")
    # Optionally re-raise or handle cleanup here

Practica en inglés

¿Cómo le explicarías un SystemExit a un compañero dev? Elige la frase correcta:

"I hit an error...

¿Listo para practicar tu inglés en el trabajo?

Lingua-e tiene ejercicios interactivos basados en conversaciones reales de developers: standups, code reviews, retrospectivas y más. Practica hasta que salga solo.

Prueba Lingua-e gratis