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 bloquetry/exceptpara manejar credenciales inválidas. listen_messages()captura internamenteConnectionLostErrory reintenta; si necesitas salir, implementa un mecanismo de bandera externo.- Para operaciones de archivos, manejar
UploadErrorpara mostrar mensajes de error amigables.