Manejo de Errores

Todas las excepciones del SDK heredan de la clase base ToDusError.

Jerarquía de Excepciones

ToDusError
├── AuthenticationError     # Credenciales inválidas o sesión expirada.
├── TokenExpiredError       # Token JWT ya no es válido.
├── ConnectionLostError     # Conexión XMPP perdida inesperadamente.
├── MessageError            # Error al enviar o recibir mensaje.
├── UploadError             # Error en subida/descarga de archivo.
├── ParseError              # Error parseando stanza XMPP.
├── RateLimitError          # Demasiadas peticiones en poco tiempo.
├── StanzaError             # Stanza malformada o no soportada.
└── GroupError              # Error relacionado con grupos MUC Light.

Descripción Detallada

ToDusError

Clase base para todos los errores del SDK.

AuthenticationError

Se lanza cuando:

  • Las credenciales (usuario/contraseña) son inválidas.
  • La sesión no está autenticada y se intenta realizar una acción que lo requiere.
try:
    client.login()
except AuthenticationError as e:
    print("Error de autenticación:", e)

TokenExpiredError

Se lanza cuando el token JWT ha expirado y el servidor lo rechaza. El cliente debe volver a autenticarse.

ConnectionLostError

Se lanza cuando la conexión XMPP se cierra inesperadamente (timeout, servidor caído, etc.). listen_messages reintenta automáticamente después de 15 segundos.

UploadError

Se lanza durante la subida o descarga de archivos (errores HTTP, URLs inválidas, permisos, etc.).

GroupError

Se lanza cuando ocurre un problema específico con grupos MUC Light (no se puede unir, miembro inexistente, etc.).

Ejemplo de Manejo de Errores

from todus import ToDusClient2
from todus.errors import AuthenticationError, ConnectionLostError

try:
    client = ToDusClient2("5312345678", "password")
    client.login()
except AuthenticationError:
    print("Credenciales incorrectas")
except ConnectionLostError:
    print("Error de red")
except Exception as e:
    print(f"Error inesperado: {e}")

Buenas Prácticas

  • Siempre envolver login() en un bloque try/except para manejar credenciales inválidas.
  • listen_messages() captura internamente ConnectionLostError y reintenta; si necesitas salir, implementa un mecanismo de bandera externo.
  • Para operaciones de archivos, manejar UploadError para mostrar mensajes de error amigables.