Los casos de uso no deben describir solamente el camino ideal. En los sistemas reales aparecen errores, datos inválidos, servicios externos que no responden, permisos insuficientes, reglas incumplidas y operaciones interrumpidas.
Las excepciones documentan estas situaciones problemáticas y explican cómo debe responder el sistema. Su objetivo es evitar que el comportamiento ante fallos quede librado a la improvisación.
Una buena especificación indica qué ocurre, qué informa el sistema, si se puede recuperar la operación y qué estado final debe quedar protegido.
Una excepción es una situación que impide continuar normalmente el flujo principal o un flujo alternativo. Puede originarse por un error del usuario, una condición del negocio, una falla técnica, un dato inválido o una dependencia externa.
Por ejemplo, en Solicitar turno, una excepción ocurre si el horario seleccionado fue reservado por otra persona antes de confirmar. El sistema no puede continuar como si el horario siguiera disponible.
Un flujo alternativo es una variante válida. Una excepción representa un problema, una interrupción o una condición que impide completar el camino normal.
Ejemplo de alternativa: el paciente busca turnos por profesional. Ejemplo de excepción: el sistema no puede confirmar el turno porque el horario ya no está disponible.
Cuando aparece una excepción, el sistema debe responder de forma controlada. Puede informar el problema, ofrecer una recuperación, volver a un paso anterior, cancelar la operación o dejar constancia de lo ocurrido. Lo importante es que el sistema no quede en un estado incoherente.
Las excepciones pueden clasificarse de distintas maneras:
Una excepción puede documentarse con esta estructura:
En Solicitar turno, puede ocurrir que otro paciente reserve el mismo horario segundos antes. La excepción podría documentarse así:
Si la precondición indica que el paciente debe estar registrado, pero el sistema detecta que no existe una cuenta válida, puede ejecutarse una excepción o redirigirse a otro caso de uso.
Cuando un caso de uso depende de un sistema externo, hay que documentar qué ocurre si ese sistema no responde.
La recuperación define cómo puede continuar el caso de uso después del problema. No todas las excepciones permiten recuperación, pero cuando sea posible debe quedar explicado.
Opciones comunes:
Una excepción debe respetar la garantía mínima del caso de uso. Si la operación no se completa, el sistema debe evitar registros incompletos, duplicaciones, datos inconsistentes o cambios no autorizados.
Por ejemplo, si falla la confirmación de un turno, no debería quedar un turno reservado a medias ni bloquearse un horario sin motivo.
Los mensajes de error deben ser claros para el actor. No conviene mostrar mensajes técnicos como "Error 500" o "Null reference" si el usuario necesita saber qué hacer.
Un mensaje útil informa el problema y, si corresponde, ofrece una acción posible:
Cada excepción importante debe tener pruebas. No basta con probar el flujo principal. Si el sistema debe manejar falta de disponibilidad, datos inválidos o fallas externas, esas situaciones deben verificarse.
Las pruebas de excepciones ayudan a evitar errores graves en producción, especialmente cuando afectan datos, pagos, reservas, permisos o integraciones.
Algunas excepciones habituales son:
| Tipo | Ejemplo | Respuesta esperada |
|---|---|---|
| Validación | Documento con formato inválido. | Solicitar corrección del dato. |
| Negocio | Cancelación fuera de plazo. | Informar restricción y no cancelar automáticamente. |
| Concurrencia | Horario reservado por otro usuario. | Mostrar nuevas opciones disponibles. |
| Integración | Servicio externo no responde. | Informar situación y registrar pendiente si corresponde. |
| Permisos | Usuario no autorizado. | Bloquear operación y mostrar mensaje adecuado. |
Al documentar excepciones, suelen aparecer estos errores:
Antes de cerrar las excepciones, conviene revisar:
Las excepciones permiten diseñar el comportamiento del sistema ante problemas reales. Sin ellas, la especificación queda incompleta y el sistema puede fallar de forma impredecible ante situaciones comunes.
Documentar errores y recuperación mejora la calidad del producto, protege los datos y facilita las pruebas. En el próximo tema estudiaremos las reglas de negocio dentro de los casos de uso.