Qué significa SystemExit y cómo solucionarlo
Referencia del error
SystemExit
Lenguaje
Severidad
CríticaCuá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
Código que causa el error
import sys
def main():
sys.exit(1)
try:
main()
except Exception as e:
print(f"Caught: {e}") # never runsError 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 herePractica 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