Lingua-e
Python

¿Qué significa SystemExit?

← Errores

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.

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ómo solucionarlo

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().

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

Errores relacionados

¿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